0

我有一个品牌模型,它有很多资产:

class Brand < ActiveRecord::Base
  attr_accessible :name, :logo1, :logo2, :colour1, :colour2, :prices_attributes

  has_attached_file :logo1
  has_attached_file :logo2

  has_many :users
  has_many :welcome_messages
  has_many :silos
  has_many :articles, :through => :silos
  has_many :libraries
  has_many :covers, :through => :libraries
  has_many :products
  has_many :prices, :through => :products, :autosave => true, :dependent => :destroy

  accepts_nested_attributes_for :prices

end

有没有一种快速的方法来获得分配给每个品牌的所有资产?还是我必须为每个人做类似的事情brand.articles.each do |article| ...

干杯!

4

2 回答 2

2

如果您想预先加载所有关联,您可以执行以下操作:

def self.all_associations
  includes(:users, :articles, :prices, :products) #and any other association
end

然后你可以运行Brand.all_associationsBrand.all_associations.find(1)

正如 jvnill 所写,这将导致 n 个数据库查询,因此在上面的示例中为 5 个数据库查询。

于 2013-04-05T01:22:40.963 回答
1

进一步 mind.blank 的解决方案,如果您不想重复自己,您可以进一步简化事情:

def self.all_associations
  includes *reflect_on_all_associations.collect(&:name)
end
于 2013-04-05T05:11:30.220 回答