2016-10-31 4 views
0

Ich habe vor kurzem mein Player Modell zerstört, und generierte ein User Modell, mit ziemlich genau die gleichen Felder außer dem Benutzer hat username:string, email:string, password:digest.Schienen heroku db: Samen nicht durch

Ich habe auch ein Blog-Modell, das in einer Eins-zu-viele-Beziehung mit dem Benutzermodell ist (zuvor mit dem Player-Modell).

Problem ist, auf der Heroku-Konsole hat das Blog-Modell immer Spieler_id Feld von zuvor.

Blog(id: integer, player_id: integer, content: text, created_at: datetime, updated_at: datetime) 

Ich kann heroku run rails db:migrate laufen, aber wenn ich versuche, heroku run rails db:seed zu laufen, es gibt mir diesen Fehler.

ActiveModel::MissingAttributeError: can't write unknown attribute `user_id` 

Was bedeutet das?

Antwort

1

Die Gerüstgeneratoren werden alte DB-Tabellen nicht für Sie neu erstellen, sondern nur neue erstellen. Sie müssen eine Migration erstellen, die die Spalte player_id umbenennt.

Auf der Konsole diesen Befehl ausführen:

rails g migration RenamePlayerIdOnBlogs 

Dann in der Datei erzeugt sie, fügen Sie den folgenden Code ein:

class RenamePlayerIdOnBlogs < ActiveRecord::Migration 
    def change 
    rename_column :blogs, :player_id, :user_id 
    end 
end 

Dann rake db:migrate laufen und Sie sollten in Ordnung sein.

+0

Führe ich dies auf meinem lokalen Server und dann drücken Sie auf Heroku oder Heroku führen Sie es? – iswg

+0

da das Blog-Modell auf meiner lokalen Konsole das richtige Feld anzeigt (user_id) – iswg

+0

Die Migration wird die Datenbank verändern. Commit dies mit git, drücken Sie auf Heroku, der Lauf 'heroku run Rake db: migrieren' –