Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在acts_as_votable中提取投票率最高的模型实例?_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 如何在acts_as_votable中提取投票率最高的模型实例?

Ruby on rails 如何在acts_as_votable中提取投票率最高的模型实例?,ruby-on-rails,ruby,Ruby On Rails,Ruby,假设我有一个post模型,它位于acts_as_votable插件下。我如何才能获得票数最高的前30名职位?它应该很简单;但是,我在插件中找不到详细说明这一点的任何文档。我意识到这是一个老问题,尽管如此,我还是遇到了同样的问题,并想把我的解决方案留在这里。因此,我实现这一点的方法是运行下面的迁移,如所述 class AddCachedVotesToPosts < ActiveRecord::Migration def self.up add_column :posts, :ca

假设我有一个post模型,它位于acts_as_votable插件下。我如何才能获得票数最高的前30名职位?它应该很简单;但是,我在插件中找不到详细说明这一点的任何文档。

我意识到这是一个老问题,尽管如此,我还是遇到了同样的问题,并想把我的解决方案留在这里。因此,我实现这一点的方法是运行下面的迁移,如所述

class AddCachedVotesToPosts < ActiveRecord::Migration
  def self.up
    add_column :posts, :cached_votes_total, :integer, :default => 0
    add_column :posts, :cached_votes_score, :integer, :default => 0
    add_column :posts, :cached_votes_up, :integer, :default => 0
    add_column :posts, :cached_votes_down, :integer, :default => 0
    add_index  :posts, :cached_votes_total
    add_index  :posts, :cached_votes_score
    add_index  :posts, :cached_votes_up
    add_index  :posts, :cached_votes_down
  end

  def self.down
    remove_column :posts, :cached_votes_total
    remove_column :posts, :cached_votes_score
    remove_column :posts, :cached_votes_up
    remove_column :posts, :cached_votes_down
  end
end
之后,
Post.highest_vote
将返回投票率最高的帖子


为了只返回30篇帖子,你可以做一些类似于
Post.highst\u-voted.limit(30)

Nice-response@Luis的事情
class Post
  def self.highest_voted
    self.order("cached_votes_score DESC")
  end
end