将对象从关联中拉入Rails中的数组

时间:2009-10-13 00:41:03

标签: ruby-on-rails arrays associations

用户has_many :donations,项目has_many :donations以及捐款belongs_to :userbelongs_to :project

我正在寻找一种合理的方法来将与用户相关的项目(通过捐赠)提取到数组中。

我现在正在做:

def index
  @user = User.find params[:user_id]
  @projects = []
  @user.donations.each do |donation|
    @projects << donation.project
  end
end

我觉得我错过了一些明显的东西,因为这似乎很蹩脚。有更好的方法吗?

修改

我不小心把这简化了。用户也可以通过其他模型与项目相关联,因此@projects = @user.projects无法满足我的需求。

1 个答案:

答案 0 :(得分:2)

class User < AR::Base
  has_many :donations
  has_many :projects, :through => :donations
  …
end

@user.projects

应该有用。

要收集许多关联集合,请参阅我的previous answer。您将需要调整它以使用直通关联(只是将它们视为正常的has_masnys),但同样适用。