2012-04-09 77 views
0

我使用了「naturalsorter」寶石排序的項目的數組(ActiveRecord對象)的代碼Rails中使用Naturalsorter寶石在模型

在控制器:

@items = Item.all 
@items = Naturalsorter::Sorter.sort_version_by_method(@items, :code) 

,但我需要重構此並將排序方法放在模型上

嗨!我已經試過:

class Item < ActiveRecord::Base 
    def self.by_code 
     Naturalsorter::Sorter.sort_version_by_method(self, 'code') 
    end 
end 

但我敢肯定,這是不一樣......所以我得到

undefined method `sort_by_code' for #<Array:0x007ff0b4c431d0> 

一些想法?謝謝!

+0

你是否需要它來處理任何'Item'的子集,或者'sort_version_by_method'的參數總是爲'Item.all'? – 2012-04-09 20:53:20

+0

是的,我需要這個工作與子集..其實我正在與ItemGroup.items ...這就是爲什麼我需要重構... – matreyes 2012-04-09 20:56:48

回答

0

也許你應該改變這一行:

Naturalsorter::Sorter.sort_version_by_method(self, 'code') 

到這樣的事情:

Naturalsorter::Sorter.sort_version_by_method(self.all, :code) 

但我還沒有嘗試過!

+0

我的導師!嗨,布拉特!我仍然得到錯誤..我不知道爲什麼我得到這個未定義的方法'sort_by_code'。 .. 任何想法? – matreyes 2012-04-11 18:51:48