ruby-on-rails-4 - Rails 4 中的引用功能

标签 ruby-on-rails-4

我只是不明白 Rails 4 中新的引用()函数 我在这里阅读定义:http://apidock.com/rails/ActiveRecord/QueryMethods/references

这只是一个英语问题,但我仍然不清楚。 这个新功能的目标是什么? (之前没有它代码也运行良好)。

我必须始终为includes() 的每个表添加引用吗?

谢谢

最佳答案

当使用includes时,Rails通常会单独加载结果。例如,如果您这样做

Post.includes(:comments)

它将发出一个查询来加载帖子,然后发出另一个查询来加载带有帖子的 post_id 的评论。

它将生成一个连接,例如,如果您想要这样做

Post.includes(:comments).where(comments: { user_id: 44})

其中一个条件依赖于相关表。但是,如果您要使用

Post.includes(:comments).where('comments.user_id = ?', 44)

您将在 Rails 4 中收到错误。任何时候您使用 SQL 代码段在条件中引用关系时,都必须使用引用。为了解决上述问题,我们会这样做

Post.includes(:comments).where('comments.user_id = ?', 44).references(:comments)

当然,另一个选择是不在条件中使用 SQL 片段,如第二个代码示例,但并不总是可以避免它们。

关于ruby-on-rails-4 - Rails 4 中的引用功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24432778/

相关文章:

ruby-on-rails - Rails image_tag 在生产中生成错误路径

ruby-on-rails - 新数据不会持久保存到 Postgres 上的 Rails 数组列

ruby-on-rails - 参数错误 : Factory not registered

ruby-on-rails - 在两个 Rails4 应用程序之间共享 session

ruby - 如何检测客户端是否关闭 Rails 4.2 上的连接

ruby-on-rails-4 - 获取 Capistrano 3 中设置变量的列表

ruby-on-rails - 如何从事件记录集合中获取所有 has_many 关联

ruby-on-rails - Rails,根据条件对 `has_many :through` 关联使用不同的连接表

ruby-on-rails - rails : Namespacing vs Engines?

css - RefineryCMS 并为 img 标签添加样式