【发布时间】:2011-07-15 22:13:26
【问题描述】:
我使用的是 Rails 2.3.5,我有一个模型,我们称之为 Post。我使用命名范围在 Post 上应用不同种类的类型。例如,在 Post 模型中,我可以根据分数对帖子进行排名:
named_scope :order_by_acception_rate_desc,
Proc.new { |limit| { :limit => limit, :order => "acception_rate desc" } }
在 Post 控制器中我有:
def best
@best_posts = Post.order_by_acception_rate_desc(10)
end
在视图中我只是渲染这个集合@best_posts:
<%= render :partial => "post", :collection => @best_posts
目前我的应用程序就是这样工作的,但实际上我不需要在 Controller 中使用“最佳”方法,我可以将它移到 Model Post 中,如下所示:
def self.best
self.order_by_acception_rate_desc(10)
end
然后在视图中我会呈现这样的集合:
<%= render :partial => "post", :collection => Post.best
我不知道哪种方法更好,但是使用模型中的排名方法,我可以避免为每种排名方法创建路线。哪种方法更好,还有比这些更好的方法吗?
【问题讨论】:
标签: ruby-on-rails view model controller