用户has_many :donations
,项目has_many :donations
以及捐款belongs_to :user
和belongs_to :project
。
我正在寻找一种合理的方法来将与用户相关的项目(通过捐赠)提取到数组中。
我现在正在做:
def index
@user = User.find params[:user_id]
@projects = []
@user.donations.each do |donation|
@projects << donation.project
end
end
我觉得我错过了一些明显的东西,因为这似乎很蹩脚。有更好的方法吗?
修改
我不小心把这简化了。用户也可以通过其他模型与项目相关联,因此@projects = @user.projects
无法满足我的需求。
答案 0 :(得分:2)
class User < AR::Base
has_many :donations
has_many :projects, :through => :donations
…
end
@user.projects
应该有用。
要收集许多关联集合,请参阅我的previous answer。您将需要调整它以使用直通关联(只是将它们视为正常的has_masnys),但同样适用。