尝试通过投票订购时出错(act_as_votable gem)

时间:2016-07-11 02:30:50

标签: ruby-on-rails ruby

所以我的投票工作非常好。但是当我尝试通过大多数投票来订购我的帖子时,我得到了这个错误,说邮政索引中的声明无效。

Error message

这是我的帖子控制器

def index
 @posts = Post.all.order(:cached_votes_up => :desc)
end

我已将缓存投票添加到帖子表迁移中,这也是它的前半部分

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_column :posts, :cached_weighted_score, :integer, :default => 0
  add_column :posts, :cached_weighted_total, :integer, :default => 0
  add_column :posts, :cached_weighted_average, :float, :default => 0.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
  add_index  :posts, :cached_weighted_score
  add_index  :posts, :cached_weighted_total
  add_index  :posts, :cached_weighted_average

如果再有代码会帮助我很乐意发布

帖子表

create_table "posts", force: :cascade do |t|
t.string   "description"
t.datetime "created_at",         null: false
t.datetime "updated_at",         null: false
t.integer  "user_id"
t.string   "image_file_name"
t.string   "image_content_type"
t.integer  "image_file_size"
t.datetime "image_updated_at"
end

1 个答案:

答案 0 :(得分:1)

public int testRecursion(int number) {列尚未添加到您的数据库中。请运行此命令,

cached_votes_up

它将重置您的数据库迁移,并将添加所有新列。它应该可以解决你的问题。

注意:使用此命令将删除所有数据库记录。