2014-09-18 50 views
2

假設你有一個屬性「年齡」決定「叫聲頻率」的方法的模型犬:排序使用的方法,由相應的模型哈希

class Dog < ActiveRecord::Base 
    scope by_age, -> { order('age ASC') } 

    def barking_frequency 
    # some code 
    end 
end 

在你的控制器,你有:

def index 
    @dogs = Dog.by_age 
end 

一旦有了@dogs哈希,你怎麼能由barking_frequency排序,所以這個結果保持特定年齡的狗一起排序,像這樣:

Name Age Barking Frequency 
Molly 2 1 
Buster 2 4 
Jackie 2 7 
Dirk  3 1 
Hank  3 3 
Jake  3 4 
Spot  10 0 

回答

2

下面將工作:

def index 
    @dogs = Dog.by_age.sort_by { |dog| [dog.age, dog.barking_frequency] } 
end 
+1

是不是很漂亮? – 2014-09-18 19:04:01

+0

@PatriceGahide是什麼意思? ;) – 2014-09-19 03:06:52

+1

對不起,我仍然爲Ruby代碼有時會變得多麼美麗和簡單而感到震驚,而我只是在寫我的密碼;) – 2014-09-19 06:08:30