Можно ли сгруппировать ассоциации в ruby ​​по рельсам? - PullRequest
0 голосов
/ 15 февраля 2012

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

Вот моя модель:

  has_many :threads_as_starter, :class_name => 'MessageThread', :foreign_key => 'sender_id'
  has_many :threads_as_recipient, :class_name => 'MessageThread', :foreign_key => 'recipient_id'

То, что я хотел бы сделать, это определить метод, который я могу сохранить в переменной экземпляра и перебрать на моей странице просмотра, которая отображает потоки current_user.

Когда я запускаю: MessageThread.where ('sender_id ИЛИ receient_id =?', 4)

   1.9.3p0 :045 > MessageThread.where( 'sender_id OR recipient_id = ?', 4 )
  MessageThread Load (0.4ms)  SELECT `message_threads`.* FROM `message_threads` WHERE (sender_id OR recipient_id = 4) ORDER BY message_threads.created_at DESC
 => [#<MessageThread id: 89, message_id: 219, sender_id: 4, recipient_id: 38, status: 0, created_at: "2012-02-15 12:26:17", updated_at: "2012-02-15 12:26:17">, #<MessageThread id: 88, message_id: 218, sender_id: 2, recipient_id: 4, status: 0, created_at: "2012-02-14 13:41:19", updated_at: "2012-02-14 13:41:19">, #<MessageThread id: 87, message_id: 210, sender_id: 1, recipient_id: 2, status: 0, created_at: "2012-02-14 13:31:12", updated_at: "2012-02-14 13:31:12">] 

Я не понимаю, почему он показывает мне строки, в которых идентификатор отправителя или получателя не равен 4.

Какой запрос будет возвращать все результаты, где sender_id равен 4, но также и все результаты, где receient_id равен 4? Мне нужно дать зарегистрированному пользователю видеть список всех его текущих тем. Те, которые были ими начаты, и те, которые не были ими.

Пользователь A и B имеют только 1 поток в таблице message_threads, но любой из них может иметь больше потоков, но с разными пользователями, но только по 1 с каждым из этих пользователей. Я использую эту таблицу message_thread для ссылки на разговоры в моей таблице сообщений, где я использую самоцвет act_as_tree.

Должен быть способ, которым я могу группировать threads_as_starter и threads_as_recipient, например. Затем all_threads вызывает current_user.all_threads для возврата всех.

Заранее спасибо С уважением

1 Ответ

0 голосов
/ 15 февраля 2012
where('sender_id OR recipient_id = ?', 4)

должно быть

where('sender_id = ? OR recipient_id = ?', 4)

или, возможно,

where('sender_id = ? OR recipient_id = ?', 4, 4)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...