我有一大組@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/ –
但姓氏不是桌子上的一列。我需要計算它作爲我循環 –