我有一個名爲name
(在數據庫中)字段的ActiveRecord模型和名爲collation_name
(不在數據庫中)的方法,該方法返回縮減版本的名稱。該模型類類似於此:在ActiveRecord中查找按方法排序的所有行
class Foo < ActiveRecord::Base
# ... other stuff ...
def collation_name
words = name.downcase.split
if words[0] == 'the'
words.shift
end
words.join(' ')
end
end
我的應用程序用於應用程序數據庫導出到包含數據,包括collation_name
作爲一個真正的列的非規範化版本的第二數據庫。我想用collation_name
來訂購記錄,以便在應用程序的視圖中顯示。我試過Foo.all(:order=>:collation_name)
,但得到了'no such column:collation_name'錯誤。
如何獲得排序的Foo
記錄列表?是否需要將collation_name
作爲ActiveRecord的應用程序數據庫中的實際列添加以在訂購時查看它?在ActiveRecord返回結果後,我應該在應用程序代碼中排序嗎?
我的問題是關於我是否可以使用ActiveRecord庫進行排序。我編輯了這個問題,希望能夠更清楚地說明問題。 – 2009-09-13 18:26:50
爲解釋澄清而編輯。 – yawn 2009-09-13 19:19:39