2009-10-13 68 views
0

用户has_many :donations,项目has_many :donations和捐赠belongs_to :userbelongs_to :project将对象从关联中拉入Rails中的数组

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

我目前做:

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

我觉得我失去了一些东西很明显,因为这似乎跛。有一个更好的方法吗?

编辑

我意外地简化了这一太远。用户也可以通过其他模型与项目关联,所以@projects = @user.projects不会去做我所需要的。

回答

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

@user.projects 

应该工作。

要收集许多关联集合,请参阅我的previous answer。你需要调整它以使用直通关联(只要把它们当作普通的has_masnys),但同样适用。

+0

谢谢,但我忘了一些重要的信息 - 我已经添加了另一个要求。 – nfm 2009-10-13 00:59:57

+0

答复已更新。 – cwninja 2009-10-13 01:09:43

+0

对于记录,链接的答案使用命名范围: http://api.rubyonrails.org/classes/ActiveRecord/NamedScope/ClassMethods.html – nfm 2009-12-29 12:11:57