ActiveRecord,渴望加载这种多对多关联的有效方法

时间:2019-05-19 12:33:28

标签: ruby-on-rails activerecord

我正在尝试优化Rails应用程序的代码,并且正在重构一些控制器查询。

在我的主页上,我有一个封面,上面有一些证据和内容。

这是我的封面模特

class Cover < ApplicationRecord
  has_many :elements, class_name: 'CoverElement', dependent: :destroy
  has_many :contents, :through => :elements
  scope :published,      -> { where arel_table[:published_at].lteq Time.zone.now }

  def self.current
    published.first
  end
end

课程内容是常规课程。在我的elements表中,有一些我需要查看的属性。

现在我要用封面的元素查询封面

@cover = Cover.includes(:elements).joins(:contents).current

还有我的内容

@contents = Content.published.where.not(id: cover.contents.pluck(:id)).limit(30)

content element关联的内容从第二个查询中排除。

然后在我的视图中,我在视图中循环访问cover.elements,并为每个element使用element和关联的content中的属性。

是否有更有效的方法来向我的封面元素加载关联内容和我的内容?

0 个答案:

没有答案