我有这个代码,我在讨论中找到了特定的受欢迎程度排名,以便我可以在热门的讨论页面上订购它们。我遇到的问题是,当我完成时,我有一个表示流行度的int,但我需要将该int与其特定的讨论相关联,以便我可以将其流行字段更新为true。我需要在没有新迁移的情况下这样做。
Rails 4
def discussion_rank
@discussions = Discussion.all
@total_rank = Array.new
@discussions.each do |discussion|
discussion.comments.each do |comment|
@total_rank << decay_time(discussion) + comments_rank(discussion) + reply_rank(comment)
end
end
@total_rank.sort {|x,y| y <=> x}
puts Discussion.find(@total_rank[0])
end
答案 0 :(得分:0)
听起来您可能希望查看sort_by
或max_by
之类的内容。您可能希望将逻辑拆分为两个方法,一个用于计算单个讨论的等级,另一个用于查找具有最高等级的讨论。这样的事情可能就是你想要的......
# In the Discussion class
def rank
# Logic to calculate rank for one discussion here
end
def self.max_rank
Discussion.all.max_by { |discussion| discussion.rank }
end
然后Discussion.max_rank
将返回最高级别的讨论。