【发布时间】:2013-01-16 22:38:31
【问题描述】:
有哪些选项可以在 Rails 应用程序中组织更高级(因此更复杂和更大)的 SQL 查询?
目的:
- 将 SQL 和相关规范保留在常规位置。
- 将更大、更可重用的 SQL 提取到 SQL 函数、视图、触发器中(那么如何维护 func、视图的代码?迁移可能不是最佳选择)
- 将 SQL 的 sn-ps 作为 AR 的一部分或作为独立的一部分重用。
- 利用大部分底层数据库功能(例如 PostgreSQL CTE、FTS、扩展等)。
- 保持 SQL 的可管理性、可维护性。
【问题讨论】:
-
我认为这是一个偏好问题,但我可能会使用单独的只读模型将更复杂的查询实现为视图(数据库类型的视图,而不是 rails 类型)。然后,这些模型可以声明
has_one(Foo)以与表模型相关联(此注释写起来令人困惑:D)。 -
@Tim 但您仍然想测试这些视图并将代码保存在某处。你在哪里做的?
-
啊,我明白你的意思了。我主要使用将管理数据库服务器上的脚本的 Oracle DB。我想您可以将源放入 config/database/sql 之类的东西,因为它们是静态的。不过这有点令人困惑。抱歉,我想我一开始并没有完全理解这个问题。
-
我不确定所有的 SQL 都是静态的。有时它会使用一些插值来将脚本应用于特定的用例,而不是重新复制它。
标签: sql ruby-on-rails ruby conventions