gpt4 book ai didi

ruby-on-rails - 如何使用 ActiveRecord 在 SQLite3 中设置 FTS 虚拟表?

转载 作者:行者123 更新时间:2023-12-03 17:04:51 31 4
gpt4 key购买 nike

我将 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 示例的 block 之前来解决这个问题。我还必须有一个单独的数据库种子任务来在种子之后构建 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/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com