我有一个简单的应用程序,其中包含用户模型,角色模型,带收件人的邮件模型。 用户通过角色拥有许多消息 并且角色通过收件人发送了许多邮件,用户也通过收件人发送了许多邮件。
收件人模型有user_id,role_id和message_id
现在我想在一个查询中显示用户的所有消息,包括他的角色消息和他的个人消息。我怎样才能做到这一点。
role model
has_many :recipients
has_many :received_messages, :class_name => 'Message', :order => 'created_at desc', through: :recipients
user model
has_many :roles
has_many :received_messages, :class_name => 'Message', :order => 'created_at desc', through: :roles, :uniq => true
has_many :recipients
has_many :private_messages, :class_name => 'Message', :order => 'created_at desc', through: :recipients
message model
has_many :recipients
has_many :roles, :through => :recipients
has_many :users, :through => :recipients
有了所有这些,我将如何获取用户消息他的角色消息和他的私人消息
例如
def all_messages
@all_messages = current_user.#all messages scope here#
end
答案 0 :(得分:1)
获取所有消息的一种方法是将received_messages数组与all_messages方法中的private_messages数组相结合。这将返回所有用户消息的数组。
def all_messages
(current_user.received_messages + current_user.private_messages).uniq
end