在我的 Rails 3.2.11 应用程序中,我有一个范围,我试图根据关联的属性对其进行排序。就我而言,我有一个 User 模型和一个 Profile 模型。用户 has_one 配置文件,我的范围位于配置文件表上的一个属性上。这是范围:
在User.rb
:
def self.with_default_show
joins(:profile).where("profiles.show_all = true")
end
然而,我遇到的麻烦是试图对此声明秩序。例如,运行:
joins(:profile).where("profiles.show_all = true").order("profiles.first_name DESC")
给我一个错误:
PG::Error: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list
我知道我可以做到.order("2")
,但这会调用我的用户表中的第二列,而不是我的配置文件表。如何正确将此范围的顺序设置为profiles.first_name?