Скажем, мы имеем эти модели
class Message
belongs_to :messageable, polymorphic: true
end
class Ticket
has_many :messages, as: :messageable
has_many :comments
end
class User
has_many :messages, as: :messageable
has_many :ratings
end
class Rating
belongs_to :user
end
class Comment
belongs_to :ticket
end
Теперь я хочу загрузить все сообщения (которые связаны с tickets
или users
) и загружать загрузку в зависимости от типа класса, либо comments
для tickets
и ratings
для users
Конечно, Message.includes(:messageable).order("created_at desc")
будет включать только связанный с ним объект, но вопрос заключается в том, как включить различные типы ассоциаций, которые производятся от каждого типа модели (т.е. в этом примере, как загружать нагрузку comments for tickets
и ratings for users
)?
Это простой пример, но что еще более сложные случаи, когда я хотел бы добавить что-то еще для user
, другую ассоциацию, и что, если эта ассоциация нуждается в большей части?