如何在不迁移新列的情况下建立模型关联

时间:2014-05-21 20:01:20

标签: ruby-on-rails ruby ruby-on-rails-4

我有这个代码,我在讨论中找到了特定的受欢迎程度排名,以便我可以在热门的讨论页面上订购它们。我遇到的问题是,当我完成时,我有一个表示流行度的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

1 个答案:

答案 0 :(得分:0)

听起来您可能希望查看sort_bymax_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将返回最高级别的讨论。