我正在尝试优化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
中的属性。
是否有更有效的方法来向我的封面元素加载关联内容和我的内容?