Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.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_Activerecord - Fatal编程技术网

Ruby on rails 预加载与条件的左关联

Ruby on rails 预加载与条件的左关联,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我有两种型号: Class Item < ApplicationRecord belongs_to :item_category end 给出项目ID列表,我想加载这些项目 如果项目位于某个深度的类别(例如2)中,则我希望另外预加载该类别以及该类别中的所有项目,即使它们不在项目ID的初始列表中 我得到的最接近的是这个,但它预加载了所有类别,而不是具有一定深度的类别: Item.where(id:id).包括(Item\u category::items)ActiveRecord查询:

我有两种型号:

Class Item < ApplicationRecord
  belongs_to :item_category
end
给出项目ID列表,我想加载这些项目

如果项目位于某个深度的类别(例如2)中,则我希望另外预加载该类别以及该类别中的所有项目,即使它们不在项目ID的初始列表中

我得到的最接近的是这个,但它预加载了所有类别,而不是具有一定深度的类别:

Item.where(id:id).包括(Item\u category::items)
ActiveRecord查询:

Item.where(id: IDS).joins(:item_category).where(depth: 2).includes(item_category: :items)
ActiveRecord查询:

Item.where(id: IDS).joins(:item_category).where(depth: 2).includes(item_category: :items)

恐怕这似乎行不通。它只返回具有深度为2的类别的项目。我需要归还所有物品。我已经更新了答案,请告诉我这是否对你有效。我担心这似乎不起作用。它只返回具有深度为2的类别的项目。我需要归还所有物品。我已经更新了答案,请告诉我这对你是否有效。
Item.where(id: IDS).joins(:item_category).where(depth: 2).includes(item_category: :items)