订购ActiveRecord关系对象

时间:2014-08-25 13:32:25

标签: ruby-on-rails activerecord

我有一个名为contact的ActiveRecord对象。它有一个叫profiles的关系。这些配置文件具有url属性。应按字母顺序按URL排序配置文件。我已尝试sort_by以及order但我收到此错误:

contact.profiles.sort_by! { |profile| profile.url }
undefined method `sort_by!' for #<Profile::ActiveRecord_Associations_CollectionProxy:0x00000105d6d430>

最好的方法是什么?我使用的是Rails v4.1.0。

1 个答案:

答案 0 :(得分:7)

使用order query method根据url

Profile属性对个人资料记录进行排序
contact.profiles.order(url: :desc) ## sort in descending order

对于升序,您可以指定asc而不是desc

<强>更新

在第二个注释中,如果您希望检索按url排序的总是的个人资料记录,请将Contact模型更新为:

class Contact < ActiveRecord::Base
  # ...
  has_many :profiles, -> { order url: :desc } ## change order as per your requirement to asc / desc
  # ...
end

在此之后,contact.profiles总是根据url生成已排序的配置文件。