Rails ActiveRecord包含内部联接

时间:2016-12-06 20:01:57

标签: ruby-on-rails activerecord rails-activerecord

在ActiveRecord模型上使用includes时,是否有更好的方法来指定内连接:

User.includes(:address).joins(:address)

似乎应该有一种更漂亮的方式来指定何时需要内连接和包含?

1 个答案:

答案 0 :(得分:3)

汤姆罗西在你的问题的评论部分解释道。

  • 如果您想使用内部联接关联加入地址表 应该使用join()
  • 如果要预加载应该使用的数据 include()或eager_load()。我个人更喜欢eager_load()函数, 因为它保证左连接将被使用。包括() 可能决定使用单独的查询而不是左连接关联
  • 如果您想使用内部联接并预加载刚刚合并的数据 这两种方法就像你的情况一样