Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 如何构建以下查询_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 3 如何构建以下查询

Ruby on rails 3 如何构建以下查询,ruby-on-rails-3,Ruby On Rails 3,我正在开发一个关于Rails3中礼物列表的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 有什

我正在开发一个关于Rails3中礼物列表的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

有什么想法吗?

如果你想要所有的东西,也许

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

虽然您可能希望将其拆分并检查该列表。但“查找”将返回一个有效列表。

如果您希望所有购买,可能

@purchases= List.find(params[:id]).gifts.collect{|g| g.purchases}
@purchases = List.find(params[:id]).
                  gifts.joins(:purchases).
                  map(&:purchases).flatten
尽管您可能希望将其拆分并检查该列表,但find返回一个有效列表

@purchases = List.find(params[:id]).
                  gifts.joins(:purchases).
                  map(&:purchases).flatten
或者只是重构您的模型:

class List < ActiveRecord::Base
  has_many :gifts
  has_many :purchases, :through => :gifts
或者只是重构您的模型:

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

虽然我更喜欢@fl00r回答的重构,但我更喜欢@fl00r回答我所寻找的重构!我已经在列表模型中添加了:purchases关系。这就是我想要的!我已经将:purchases关系添加到列表模型中。