Группировка сообщений для отображения последних в обзоре - PullRequest
1 голос
/ 05 апреля 2011

Я пытаюсь организованно показывать сообщения в своем приложении rails 3.Я пытаюсь сгруппировать сообщения по идентификатору списка и показать последнее сообщение в этом разговоре, относящееся к списку.

Я пытаюсь использовать этот синтаксис в моем контроллере:

@messages = Message.all(:conditions => { :recipient_id => current_user.id },
                        :group => :listing_id,
                        :order => "created_at DESC")

Это успешно группирует мои сообщения по списку, но не показывает последнее сообщение в этой группе.Он показывает самый старый.

Кто-нибудь знает, как это сделать?Я пытался использовать условие: Имея, но пока безрезультатно.

1 Ответ

2 голосов
/ 05 апреля 2011

Самая важная вещь, с которой нужно познакомиться при использовании ActiveRecord, - это просмотр ваших логов.Если вы запускаете свое приложение с локального хоста, запущенного с rails server, то вы должны увидеть весь SQL, выведенный на вашу консоль.

Я говорю «проверь свой SQL», потому что твой подход не совсем понятен.Если вы хотите выбрать только конкретную беседу и получить ее последнее сообщение, вам следует сделать что-то вроде этого:

@messages = Message.all(:conditions => 
                      { :recipient_id => current_user.id,
                        :listing_id => params[:listing_id] },
                        :order => "created_at DESC")

Если вы пытаетесь получить последние Message для каждого Listingтогда вам нужно работать с другой точки зрения, например так:

@listings = Listings.all(:conditions => {:recipient_id => current_user.id},
                         :include => :messages,
                         :order => 'messages.created_at DESC')

last_messages_of_first_listing = @listings.first.messages.first
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...