2009-10-13 42 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