我是新手。我有一个(sqlite3,但与ActiveRecord没关系)表名为Messages和一个名为Message的模型。我想在数据库中找到user_id或reciever_id等于对象用户及其属性id的所有消息(对于简短的user.id)。我知道它可能只是一行简单的代码,但我想以正确的“轨道”方式进行,我对此没有多少经验。
我正在使用Rails 3.感谢您的帮助。
干杯
答案 0 :(得分:1)
我怀疑您在代码中的许多地方都会想要这种关系,实际上这代表了应用程序设计的基本部分。
概念上,“消息”属于“发送者”,也属于“接收者”。相反,“用户”有许多她发送的消息,以及她收到的许多消息。
在Message模型中,添加以下内容
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
答案 1 :(得分:0)
我假设您指的是用户has_many :messages
....
# assuming you are looking for a particular user
Message.where(['user_id=? OR receiver_id=?', user.id, user.id])