Rails:自动获取每行的关联数据

时间:2011-05-23 01:05:32

标签: ruby-on-rails-3 associations paperclip

我不是一个新手,并且知道如何在PHP中执行此操作,但在Rails中我的头脑正在旋转。

我有一个模型建筑

class Building < ActiveRecord::Base
   belongs_to :user
   has_many :assets
   ...
end

并使用Paperclip gem作为资产模型

class Asset < ActiveRecord::Base
  belongs_to :user
  belongs_to :buildings
  ...
end

我希望以干燥的方式自动请求建筑物的资产。我想要避免的是做一个查询来获取所有用户的建筑物并循环遍历每一行以获得所有资产(如建筑物#index)。我想要这样的东西:

@user.buildings.photos

这是否可以与关联或我是否必须对JOIN进行恼人的自定义SQL查询并制作一堆虚拟列?

1 个答案:

答案 0 :(得分:1)

如果您不希望触发多个查询,请使用:
@user.buildings.includes(:assets)

如果您正在寻找用户的所有资产:
@user.buildings.includes(:assets).collect {|building| building.assets}.flatten

更好的方法是在用户模型中定义资产方法:

def assets
  buildings.includes(:assets).collect {|building| building.assets}.flatten
end

并访问@user.assets