2016-06-16 6 views
2

ここに質問があります。Rails db:シード不明の属性

私はRailsプロジェクトを持っています。私は自分のデータベースをクリアして、いくつかのテストデータでそれを埋めるためにしたい場合は私が実行します。

rake db:drop db:create db:migrate db:seed 

と私はエラーを持っている:

NoMethodError: undefined method login for #<User:0x007fecf46afe80>

私が個別に実行:

rake db:drop db:create db:migrate 
rake db:seed 

はすべてうまくいく。

db/seeds.rbのすべてのアクションは、ActiveRecord::Base.transactionブロックで囲まれています。

私は

rake db:drop db:create db:migrate db:seed

作業を行うことが私デシベル/ seeds.rbの上部にUser.reset_column_informationを追加する必要がありました。

前に同じエラーがありませんでした。reset_column_informationなし。誰かがそれが起こる理由を知っていますか?

PS:docsからrake db:drop db:create db:migrateデシベル/ schema.rbで "行方不明" の欄があると私はDBに、このコラムを見ることができます直接

+0

コントローラとモデルを表示してください – vipin

答えて

3

を実行した後:

reset_column_information() public

Resets all the cached information about columns, which will cause them to be reloaded on the next request.

The most common usage pattern for this method is probably in a migration, when just after creating a table you want to populate it with some default values

あなたがしていますdb:migrateタスクはusersテーブル内の列情報を変更しますが、rake cammandが終了するまで、これらの変更がdb/schema.rbファイルに正しく書き込まれていないように見えます。 db:seedタスクはdb/schema.rbを参照して、必要な列が存在するかどうかを確認しますが、別のrakeコマンドを入力するか、またはreset_column_information()を実行するまでは、db:migrate以前のスキーマを表示します。

+0

お返事ありがとうございます。それは論理的に聞こえる。しかし、なぜそれが起こるのですか?なぜそれ以前に起こらなかったのですか? – user3309314

+0

どうしてですか? - 私の答えを見てください。なぜそれ以前に起こらなかったのですか? - あなたは "前"についての情報を与えていないので、私は言うことができません。あなたのコードや環境が以前から今まで変わったのは何ですか? –

関連する問題