ユーザーモデル、ロールモデル、メッセージモデルと受信者を備えたシンプルなアプリがあります。ユーザーは役割を介して多くのメッセージを持ち、役割は受信者を介して多くのメッセージを持ち、ユーザーも受信者を介して多くのメッセージを持ちます。
受信者モデルには user_id、role_id、および message_id があります
そして今、私は、役割メッセージと個人的なメッセージを含むユーザーのすべてのメッセージを 1 つのクエリで表示したいと考えています。どうすればこれを達成できますか。
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