我有3个型号:
1)ContentType(父级)
2)RecentTools(ContentType的最后3个子项,model是Tool,recent_tools只是使用工具范围的关联)
3)ToolTranslation(工具的孩子)
我想解决我的n + 1,并为此编写包含。现在我被困了:
ContentType.includes(recent_tools: :tool_translation)
我觉得这应该适用于指南,但这包括总是返回完整的工具列表,而不是recent_tools,以及它们的所有翻译。
这是我的工具.rb
class Tool < ApplicationRecord
has_one :tool_translation, -> { where(locale: I18n.locale) }, dependent: :destroy
belongs_to :content_type
scope :recent, ->(number){ limit(number) }
end
和content_type模型:
class ContentType < ApplicationRecord
has_many :tools, dependent: :destroy
has_many :recent_tools, -> { recent(3) }, class_name: "Tool"
end
我失踪的地方?谁能解释一下?也许这是一个错误的逻辑来获得最近的工具(它需要因为我只需要在主页上的3个最后一个content_type工具)?我该怎么写正确的包含?谢谢!
答案 0 :(得分:0)
希望这会起作用
ContentType.includes(:recent_tools, recent_tools: :tool_translation)
如果没有,请告诉我。