0

ユーザーがメッセージを送受信できる小さなアプリケーションを構築しています。各メッセージにはsender_idとがありrecipient_idます (どちらにもユーザー ID が含まれます)

# Relevant lines of User model

has_many :sent_messages, :class_name => 'Message', :foreign_key => 'sender_id'
has_many :received_messages, :class_name => 'Message', :foreign_key => 'recipient_id'

@user.all_messagesUser モデルで を呼び出して、その User の送信メッセージと受信メッセージの両方を返せるようにするにはどうすればよいですか?

(私は Rails 3.2 を使用しています)

4

2 に答える 2

1
def all_messages
   sent_messages + received_messages
end
于 2012-11-30T09:29:42.860 に答える
1

has_manyアソシエーションでそれを行うことは不可能です。私はこのようにします:

def all_messages
  Message.where("sender_id = ? OR recipient_id = ?", self.id, self.id)
end

このようにして、他のフィルターを追加することができます。

于 2012-11-30T09:39:45.243 に答える