我使用Rails 2.3.5,我有一個模型,我們稱之爲Post。我使用命名範圍來對Post應用各種排序。例如,在Post模型我有可能通過它的成績排名的帖子:Rails中的旁路控制器
named_scope :order_by_acception_rate_desc,
Proc.new { |limit| { :limit => limit, :order => "acception_rate desc" } }
在後控制器我有:
def best
@best_posts = Post.order_by_acception_rate_desc(10)
end
在視圖中我只呈現這個集合@best_posts:
<%= render :partial => "post", :collection => @best_posts
目前我的應用程序那樣工作,但實際上我並不需要在控制器「最好」的方法,我可以將它移動到模型後做這樣:
def self.best
self.order_by_acception_rate_desc(10)
end
,然後在視圖中我將會使集合,如:
<%= render :partial => "post", :collection => Post.best
我不知道哪種方法比較好,但使用該模型中的排名方法,我會避免創建路線爲每一種排名方法。什麼方法更好,有沒有比這更好的方法?