Sql 将消息分组以显示概览中的最新消息
我正在尝试在rails 3应用程序中以有组织的方式显示消息。我正在尝试按列表id对消息进行分组,并显示该会话中属于该列表的最新消息 我正在控制器中尝试以下语法:Sql 将消息分组以显示概览中的最新消息,sql,ruby-on-rails,ruby,activerecord,group-by,Sql,Ruby On Rails,Ruby,Activerecord,Group By,我正在尝试在rails 3应用程序中以有组织的方式显示消息。我正在尝试按列表id对消息进行分组,并显示该会话中属于该列表的最新消息 我正在控制器中尝试以下语法: @messages = Message.all(:conditions => { :recipient_id => current_user.id }, :group => :listing_id, :order =>
@messages = Message.all(:conditions => { :recipient_id => current_user.id },
:group => :listing_id,
:order => "created_at DESC")
这成功地通过列表将我的消息分组在一起,但是它不会显示该组中的最后一条消息。它显示了最古老的一个
有人知道如何做到这一点吗?我尝试过使用:having子句,但到目前为止没有任何效果。使用ActiveRecord时要熟悉的最重要的事情是查看输出日志。如果您是在本地主机上运行应用程序,由
rails服务器启动,那么您应该可以看到所有SQL输出到控制台中
我之所以说“检查您的SQL”,是因为您的方法不太合理。如果只想选择特定对话并检索其最后一条消息,则应执行以下操作:
@messages = Message.all(:conditions =>
{ :recipient_id => current_user.id,
:listing_id => params[:listing_id] },
:order => "created_at DESC")
如果您试图为每个列表
获取最后一条消息
,那么您需要从不同的角度工作,如下所示:
@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
显示SQL表的DLL可能会有所帮助。您在
处创建了一个字段,我假设在将行添加到表中时会设置该字段。当你说“最后一条消息”和“最早的消息”时,你能定义一下你的意思吗?如果你在
字段按created\u排序,它们看起来是一样的。