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_messages,并返回该用户发送和接收的消息?

(我使用的是 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 回答