ruby on rails 3 -如何构建以下查询



我正在开发一个关于Rails 3礼物清单的web应用程序。我想把所有的采购都列在一张清单上。这些是模型和它们之间的关系:

class Gift < ActiveRecord::Base
  belongs_to :list
  has_many :purchases
class List < ActiveRecord::Base
  has_many :gifts
class Purchase < ActiveRecord::Base
  belongs_to :gift

所以,基本上,我已经尝试了以下代码(我不认为这是最好的方式来做到这一点),即使结果是正确的,我已经意识到,我得到了一个Gift对象而不是Purchase:

@purchases = List.find(params[:id]).gifts.joins(:purchases).select("purchases.*")

任何想法?

@purchases = List.find(params[:id]).
                  gifts.joins(:purchases).
                  map(&:purchases).flatten

或者只是重构你的模型:

class List < ActiveRecord::Base
  has_many :gifts
  has_many :purchases, :through => :gifts

List.find(params[:id]).purchases

如果你想要所有的购买也许…

@purchases= List.find(params[:id]).gifts.collect{|g| g.purchases}

尽管你可能想把它分开并检查List。find返回一个有效的List。

相关内容

  • 没有找到相关文章

最新更新