Ruby on rails 是否可以控制从RubyonRails中的另一个表使用默认的\u作用域返回的顺序结果?

Ruby on rails 是否可以控制从RubyonRails中的另一个表使用默认的\u作用域返回的顺序结果?,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.1,rubygems,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 3.1,Rubygems,我有消息线程,在用户收件箱页面上我显示了用户名和对话的其他参与者的部分消息 在methodthread模型中,我有: default_scope :order => 'message_threads.updated_at DESC' 我意识到这不是我需要的。我需要从messages表中获取创建的_。因此,每次向消息线程添加新消息时,它都会将该消息线程置于列表的顶部 为了让你更好地理解我有以下表格: 消息(我使用acts作为树插件为每个对话创建子项和父项。例如,父项id是消息的主id,而主

我有消息线程,在用户收件箱页面上我显示了用户名和对话的其他参与者的部分消息

在methodthread模型中,我有:

default_scope :order => 'message_threads.updated_at DESC'
我意识到这不是我需要的。我需要从messages表中获取创建的_。因此,每次向消息线程添加新消息时,它都会将该消息线程置于列表的顶部

为了让你更好地理解我有以下表格:

消息(我使用acts作为树插件为每个对话创建子项和父项。例如,父项id是消息的主id,而主id成为子项的父项id。)

消息\u线程(我使用此表引用对话,因此我在此处查找具有空父\u id的消息\u id的发件人\u id和收件人\u id。这将确认消息是父消息且具有子消息。)

不管怎样,我想做的最好的方法是控制返回方法线程表的结果的顺序,在消息表的时间使用创建的线程返回


您可以清除从默认范围获得的顺序和通过联接表查询的顺序,如下所示:

MessageThreads.except(:order).joins(:message).order("messages.created_at DESC").

另外,如果愿意,您可以使用方法unscoped清除默认范围。

我想另一种方法是更新,每次在我的messages表中发送或接收新消息时,更新消息线程的列。这样,我可以使用当前代码显示线程。你怎么认为?