Ruby on rails RubyonRails:按子属性排序

Ruby on rails RubyonRails:按子属性排序,ruby-on-rails,Ruby On Rails,如果我有一个具有属性X的模型a和一个称为具有属性Y的B的子模型,我如何按Y和X排序a的所有实例?我将使用小写字母: a_instances.sort_by{|a| [a.b.y, a.x]} 您可以使用default\u scope按关联对所有模型实例进行排序。您只需将关联的模型名称传递给:includes参数并调整订单参数: default\u范围:include=>'record',:order=>'records.attribute' 但是,不强烈建议使用默认范围。一种更简洁的方法是在父

如果我有一个具有属性X的模型a和一个称为具有属性Y的B的子模型,我如何按Y和X排序a的所有实例?

我将使用小写字母:

a_instances.sort_by{|a| [a.b.y, a.x]}

您可以使用
default\u scope
按关联对所有模型实例进行排序。您只需将关联的模型名称传递给
:includes
参数并调整订单参数:

default\u范围:include=>'record',:order=>'records.attribute'

但是,不强烈建议使用默认范围。一种更简洁的方法是在父模型中创建一个类方法,您可以从控制器调用该类方法:

def self.all_ordered_by_child
   includes(:records).order('records.attribute DESC')
end

您只需更新调用父模型中所有记录的所有实例。

谢谢,但是否有创建默认范围的方法,以便自动排序?谢谢。进一步的问题:是否有一种使用哈希而不使用直接SQL查询进行排序的方法?