从一个列表中的两个条件获取数据库中的数据

时间:2010-12-31 15:25:16

标签: ruby-on-rails

我是新手。我有一个(sqlite3,但与ActiveRecord没关系)表名为Messages和一个名为Message的模型。我想在数据库中找到user_id或reciever_id等于对象用户及其属性id的所有消息(对于简短的user.id)。我知道它可能只是一行简单的代码,但我想以正确的“轨道”方式进行,我对此没有多少经验。

我正在使用Rails 3.感谢您的帮助。

干杯

2 个答案:

答案 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])