Я пытаюсь оптимизировать код моего приложения 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
.
Есть ли более эффективный способ загружать элементы обложки содержимым партнеров и моим содержимым?