我将AR与Rails 3.0.9和SQLite 3.6.22(Ubuntu Lucid Lynx)一起使用。我已将FTS3虚拟表添加到以前未使用FTS的数据库中。我不知道如何使用AR调用(例如create_table)创建所需的虚拟表。因此,我使用原始SQL创建并填充了表。我从使用迁移开始。起初效果不错,但事实证明schema.rb不完整。 AR无法以某种方式将FTS表转储到架构中。我无法解决此问题。

例如,这意味着当我运行RSpec测试套件时,FTS表不在数据库中。我通过添加一个辅助方法来填充FTS表(只需几秒钟)并将其添加到相关RSpec示例的块之前来解决此问题。我还必须有一个单独的数据库种子任务来在种子之后构建FTS表。

当前的安排实际上可以正常工作,因为动态构建虚拟表只需很少的时间。但是我确信我应该能够直接使用AR调用来构建FTS表,我想它将避免其他问题(表未转储到schema.rb)。是否有通过AR通过SQLite设置FTS的文档?我找不到任何东西。谢谢。

最佳答案

您需要使用config/application.rb键在config.active_record.schema_format中将架构格式设置为SQL。 AR确实没有办法将类似数据库的特定内容转储到schema.rb中(Connection#execute的缩写)

疯狂的替代方案是修补迁移,以将那些执行语句存储在某个地方,并将其作为execute调用放入schema.rb中。

关于ruby-on-rails - 如何使用ActiveRecord在SQLite3中设置FTS虚拟表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7629928/

10-11 12:38