Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.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 在一个查询中获取不同模型的子级_Ruby On Rails_Associations_Ruby On Rails 5_Ruby On Rails 5.1 - Fatal编程技术网

Ruby on rails 在一个查询中获取不同模型的子级

Ruby on rails 在一个查询中获取不同模型的子级,ruby-on-rails,associations,ruby-on-rails-5,ruby-on-rails-5.1,Ruby On Rails,Associations,Ruby On Rails 5,Ruby On Rails 5.1,我试图了解Rails中有哪些解决方案可以让同一个父级查询不同模型的子级 例如,我想获取属于同一类别的所有图像和文章,并按在处创建的

我试图了解Rails中有哪些解决方案可以让同一个父级查询不同模型的子级


例如,我想获取属于同一类别的所有图像和文章,并按
处创建的 您可以在rails中尝试“包含”

Article.includes(:Category)

您可以在rails中尝试“includes”
文章。包括(:类别)

正如我所说,在我看来,您可以使用。在您的情况下,可能是这样的:

Category.where(id:2).包括(:图像,:文章).排序依据(&:created\u at)

基本上,你通过你想要的
类别
ID,得到
:图像,:文章
,它们属于具有特定ID的
类别。
排序依据
可能应该进行排序


这也可以帮助你。

正如我所说,在我看来,你可以使用。在您的情况下,可能是这样的:

Category.where(id:2).包括(:图像,:文章).排序依据(&:created\u at)

基本上,你通过你想要的
类别
ID,得到
:图像,:文章
,它们属于具有特定ID的
类别。
排序依据
可能应该进行排序


这也会对您有所帮助。

您不能简单地强制Active Record在一个查询(afaik)中包含其所有依赖项,而不管是惰性/急切加载。我认为你最好的选择是:

class Category
  has_many :images
  has_many :articles
end

class Image
  belongs_to :category
end

class Article
  belongs_to :category
end
只要您迭代类别并获取它们的图像和文章,这将进行三次查询,每个表一次查询
类别
图像
文章
,这对于ORM的易用性是一个很好的折衷。
现在,如果你坚持只在一个查询中提供所有信息,当然这是一种使用的方式,但如果值得的话,请三思。我看到的最后一个选择是好的老SQL,它具有:

class Category
  has_many :images, -> { order(:created_at) }
  has_many :articles, -> { order(:created_at) }
end

categories = Category.includes(:images, :articles)

query=您不能简单地强制活动记录在单个查询(afaik)中包含其所有依赖项,无论是延迟/急切加载。我认为你最好的选择是:

class Category
  has_many :images
  has_many :articles
end

class Image
  belongs_to :category
end

class Article
  belongs_to :category
end
只要您迭代类别并获取它们的图像和文章,这将进行三次查询,每个表一次查询
类别
图像
文章
,这对于ORM的易用性是一个很好的折衷。
现在,如果你坚持只在一个查询中提供所有信息,当然这是一种使用的方式,但如果值得的话,请三思。我看到的最后一个选择是好的老SQL,它具有:

class Category
  has_many :images, -> { order(:created_at) }
  has_many :articles, -> { order(:created_at) }
end

categories = Category.includes(:images, :articles)

query=Mind展示一个例子,说明如何在这个上下文中使用它?Mind展示一个例子,说明如何在这个上下文中使用它?我想这不是关于什么吗?我想在他们的例子
文章中加载所有
文章。包括(:category,:comments)
?但是如果你有一个例子的话,我希望看到一个有效的例子!在Rails示例中,“这将加载所有文章以及每个文章的相关类别和注释”。在您的情况下,可能是
类别。包括(:图像,:文章)
其中
类别
是一个具有您所需ID的类别。如果我的问题不清楚,我很乐意澄清。但再一次,请提交一个工作示例的答案:)我想这不是关于吗?我想这会加载他们示例中的所有
文章
。包括(:类别,:注释)
?但是如果你有一个例子的话,我希望看到一个有效的例子!在Rails示例中,“这将加载所有文章以及每个文章的相关类别和注释”。在您的情况下,可能是
类别。包括(:图像,:文章)
其中
类别
是一个具有您所需ID的类别。如果我的问题不清楚,我很乐意澄清。但请再次提交一个工作示例的答案:)