Mic*_*lta 6 ruby sorting ruby-on-rails posts ruby-on-rails-3
我希望能够显示帖子,并按照几个标准对它们进行排序,首先是它们对它们的投票数量,第二个是它们创建日期.我不希望显示超过一周的帖子,因此只显示上周的帖子.我试过这样做:
<%= render @posts.sort_by { |post| post.votes.count if post.created_at < 1.week.ago.utc }.reverse %>
Run Code Online (Sandbox Code Playgroud)
但它给了我一个错误的比较NilClass与2失败
我知道代码的工作原理只是通过投票计数来排序帖子,但我也想限制时间,所以有人可以告诉我如何做到这一点.我还是新人,为简单而感到抱歉.
@Salil解决方案没问题,但我建议添加counter_cache列(http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html)并更改recent_post代码(来自此评论:https://stackoverflow.com/a/11498634/1392074)成:
def self.recent_posts
Post.where("created_at >= ?", 1.week.ago.utc).order("votes_count DESC, created_at DESC")
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5938 次 |
| 最近记录: |