Получить данные из базы данных с двумя условиями в одном списке - PullRequest
0 голосов
/ 31 декабря 2010

Я новичок в этом.У меня есть (sqlite3, но с ActiveRecord это не имеет значения) таблица с именем Messages и модель под названием Message.Я хочу найти все сообщения в базе данных, которые имеют user_id или reciever_id, равные объекту user и его атрибуту id (для краткого user.id).Я знаю, что, вероятно, это всего лишь одна простая строка кода, но я хочу сделать это правильным образом, и у меня нет особого опыта в этом.

Я использую Rails 3. Спасибо за любую помощь,

Приветствия

Ответы [ 2 ]

1 голос
/ 31 декабря 2010

Я подозреваю, что вам понадобятся эти отношения во многих местах вашего кода, и на самом деле это представляет фундаментальную часть дизайна вашего приложения.

Концептуально «сообщение» принадлежит «отправителю», а также «получателю».И наоборот, «пользователь» имеет много сообщений, которые он отправил, и много сообщений, которые он получил.

в модели сообщений, добавьте следующее

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
0 голосов
/ 31 декабря 2010

Я предполагаю, что вы имеете в виду пользователя has_many :messages ....

# assuming you are looking for a particular user
Message.where(['user_id=? OR receiver_id=?', user.id, user.id])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...