Я подозреваю, что вам понадобятся эти отношения во многих местах вашего кода, и на самом деле это представляет фундаментальную часть дизайна вашего приложения.
Концептуально «сообщение» принадлежит «отправителю», а также «получателю».И наоборот, «пользователь» имеет много сообщений, которые он отправил, и много сообщений, которые он получил.
в модели сообщений, добавьте следующее
belongs_to :user
belongs_to :receiver, :class_name => "User"
в модели пользователя, добавьте следующее
has_many :messages
has_many :sent_or_received_messages, :class_name => "Message", :conditions => ["user_id = ? OR receiver_id = ?", id, id])
Теперь вы можете сделать это:
my_user.messages # all of the messages the user has sent
my_message.user # the user who sent the message
my_message.receiver # the user who received the message
my_user.sent_or_received_messages # all messages where the user was a sender or a receiver