2016-07-11 4 views
2

So habe ich die Abstimmung funktioniert einwandfrei. Aber wenn ich versuche, meine Posts mit den meisten Ups zu bestellen, erhalte ich den Fehler, dass die Statement-Anweisung im Post-Index ungültig ist.Fehler beim Versuch, durch Votes zu bestellen (act_as_votable gem)

Error message

Dies ist mein Beitrag Controller

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

Ich habe die Cached Stimmen hinzugefügt Tisch Migration auch hier ist die erste Hälfte davon

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 

Wenn mehr Code an jeden Beitrag wird helfen Ich werde es gerne posten

P osts Tisch

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 
+0

Kann ich Ihre 'posts'-Tabelle aus der Schemadatei sehen? –

+0

@ M.Karim Ich hoffe, das war der Tisch, den Sie fragten –

Antwort

1

cached_votes_up Spalte zu Ihrer Datenbank noch nicht hinzugefügt. Bitte führen Sie diesen Befehl,

Es wird zurückgesetzt Ihre Datenbank Migrationen und alle neuen Spalten hinzugefügt werden. Es sollte dein Problem lösen.

Hinweis: Alle Datenbankdatensätze werden mit diesem Befehl entfernt.

+0

Vielen Dank –

+0

Willkommen. Führen Sie 'rake db: migrate 'immer aus, nachdem Sie eine neue Migration hinzugefügt haben. –

+0

Ich habe es getan. Ich habe es ein paar Mal ausgeführt, um sicherzugehen. Ich weiß nicht, warum es nicht geworfen hat. Das nächste Mal, wenn ich weiß, dass ich ein Migrationsproblem habe, werde ich daran denken, rake db zu versuchen: migrate: reset –

Verwandte Themen