我有一大组@clients
,我想按客户端的姓氏排序,但似乎无法使其工作。我需要select
:name
和:id
来加速查询。Rails使用自定义方法排序
@clients = Client.all.select(:name, :id)
@clients.sort { |a, b| a.name && b.name ? a.name.split(" ").last[0] <=> b.name.split(" ").last[0] : a ? -1 : 1}
结果我得到的是:
#<ActiveRecord::Relation [#<Client id: 460, name: "Jim Jimmy">, #<Client id: 440, name: nil>, #<Client id: 231, name: "Paigetest Doyle">, #<Client id: 441, name: "Jeremy Lopez">, #<Client id: 462, name: "blah blah">, #<Client id: 348, name: "Jan Aldrich">, #<Client id: 464, name: "fefw fewfew">, #<Client id: 466, name: nil>, #<Client id: 67, name: "Jeremy Lopez">, #<Client id: 449, name: nil>, ...]>
你会得到什么错误?你会得到什么结果? –
您应该让数据库使用'order'进行排序。不要在ActiveRecord :: Relation上使用'sort',尤其是如果速度是一个问题。另外:http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/ –
但姓氏不是桌子上的一列。我需要计算它作为我循环 –