2016-10-31 5 views
0

私は最近Playerモデルを破壊し、Userモデルを生成しました。ユーザー以外のフィールドはほとんど同じフィールドです。username:string, email:string, password:digestです。rails heroku db:seedが通過しない

私は、Userモデル(以前はPlayerモデル)と1対多の関係にあるBlogモデルも持っています。

class User < ApplicationRecord 
    has_many :blogs, dependent: :destroy 
end 

class Blog < ApplicationRecord 
    belongs_to :user 
end 

問題は、Herokuコンソールでは、Blogモデルにまだ前からのplayer_idフィールドがあります。

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

私はheroku run rails db:migrateを実行することができますが、私はheroku run rails db:seedを実行しようとすると、それは私に、このエラーが発生します。

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

これはどういう意味ですか?

答えて

1

スキャフォールドジェネレータは古いDBテーブルを再構築しません。新しいものを作成するだけです。 player_id列の名前を変更する移行を作成する必要があります。コンソールで

は、このコマンドを実行します。

rails g migration RenamePlayerIdOnBlogs 

そして、それが生成するファイルの中に、次のコードを追加します。

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

を次にrake db:migrateを実行し、[OK]をする必要があります。

+0

ローカルサーバーでこれを実行し、それからherokuまたはherokuを実行しますか? – iswg

+0

ローカルコンソール上でブログモデルが正しいフィールド(user_id)を表示する – iswg

+0

マイグレーションによってデータベースが変更されるためです。 gitを使って、Herokuに実行を依頼します。「heroku run rake db:migrate」 –

関連する問題