我正在尝试创建一个旧列表的新列表,其中包含我的网站的所有“故事”。
每一个故事都有几个章节,每个章节都有一定的票数。我想要一个新的名单,所有的故事都按票数排序。
到目前为止这是我的代码:

def mostVoted
    allStories = Story.all
    allStories.each do |story|
        votes = 0
        story.chapters.each do |chapter|
            votes = votes + chapter.votes.count
        end
    end
end

有人能帮我走得更远吗?谢谢!

最佳答案

def mostVoted
  Story.all.sort_by do |story|
    story.chapters.map do |chapter|
      chapter.votes.count
    end.reduce(0, :+)
  end
end

关于ruby-on-rails - 根据票数对列表进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24998764/

10-16 22:42