0

我有 3 个模型:

1)内容类型(父)

2)RecentTools(ContentType的最后3个孩子,模型是工具,recent_tools只是使用工具范围的关联)

3)ToolTranslation(工具的孩子)

我想解决我的 n+1,并为此编写包含。现在我卡住了:

ContentType.includes(recent_tools: :tool_translation)

根据指南,我猜这应该可以工作,但这包括总是返回一个完整的工具列表,而不是最近的工具,以及它们的所有翻译。

这是我的工具.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 工具)?我应该如何正确编写包含?谢谢!

4

1 回答 1

0

希望这会奏效

ContentType.includes(:recent_tools, recent_tools: :tool_translation)

如果没有,请告诉我。

于 2017-08-20T19:49:50.817 回答