假设我们有这些模型
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
or users
),并根据类的类型进行急切加载,无论是comments
fortickets
还是ratings
forusers
当然Message.includes(:messageable).order("created_at desc")
只会包含直接关联的对象,但问题是如何包含从每个模型类型派生的不同关联类型(即在本例中,如何预先加载comments for tickets
和ratings for users
)?
这只是一个简单的例子,但是更复杂的情况呢,我想为user
, 另一个关联包含其他内容,如果该关联需要更多包含怎么办?