Rails让ActiveRecord一次性获取多个关联?

下面的问题有一个很好的答案,可以使用Comment.includes(:user)在一次点击中获取activerecord集合的关联值。 当你想要一次性获取多个关联时怎么办?

Rails有活跃记录一次性获取所有需要的关联吗?

将这些链接在一起的最好方法就像Customer.includes(:user).includes(:sales).includes(:prices)或者是否有更清洁的方式。

此外,当我在索引表上的循环上执行此操作时。 我可以在customer.rb模型上添加一个方法,以便我可以调用@customers.table_includes

 def table_includes self.includes(:user).includes(:sales).includes(:prices) end 

为了记录,我测试了上面的内容并且它没有用,因为它是一个集合上的方法(还没有弄清楚如何做到这一点)。

在回答这个问题时,我假设usersalesprices都是Customer关联的。

而不是链接,你可以做这样的事情:

 Customer.includes(:user, :sales, :prices) 

在为此创建抽象方面,您确实有几个选项。

首先,您可以创建一个范围:

 class Customer < ActiveRecord::Base scope :table_includes, -> { includes(:user, :sales, :prices) } end 

或者如果你想让它成为一个方法,你应该考虑将它作为类级方法而不是实例级方法:

 def self.table_includes self.includes(:user, :sales, :prices) end 

我会考虑创建这个抽象的目的。 像table_includes这样的非常通用的名称从长远来看可能不会非常友好。