代码之家  ›  专栏  ›  技术社区  ›  nfm

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

  •  0
  • nfm  · 技术社区  · 17 年前

    用户 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 不会做我想做的事。

    1 回复  |  直到 17 年前
        1
  •  2
  •   Community Mohan Dere    9 年前
    class User < AR::Base
      has_many :donations
      has_many :projects, :through => :donations
      …
    end
    
    @user.projects
    

    应该工作。

    要收集许多关联集合,请参见 previous answer . 您将需要调整它以使用通过关联(只是将它们视为普通的has-masnys),但同样适用。