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
为了记录,我测试了上面的内容并且它没有用,因为它是一个集合上的方法(还没有弄清楚如何做到这一点)。
在回答这个问题时,我假设user
, sales
和prices
都是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
这样的非常通用的名称从长远来看可能不会非常友好。