2016-08-15 13 views
0

私は最近schema.rbファイルを見て、データベースに存在する特定の列が表示されず、一部の表が完全に欠落していることがわかりました。欠落した列は「def change add_column」移行によってデータベースに追加されましたが、その方法で追加された列の一部はschema.rbに期待通りに表示されます。schema.rbファイルが更新されないのはなぜですか?

詳細を確認すると、私はUsersテーブルを作成してからschema.rbが更新されていないことに気付きました。

20151019205241_create_users.rb:

class CreateUsers < ActiveRecord::Migration 
    def change 
    create_table :users do |t| 
     t.string :name 
     t.string :email 
     t.timestamps null: false 
    end 
    end 
end 

これは実際に私のために問題が発生していないが、私はschema.rbは自動的に更新保持されることになって、それが更新さを持っていることが重要だろうと思いましたデータベースを再作成します。誰も私がそれが更新されない理由を理解するのを助けることができますか?

データベースをsqlite3からpostgresqlに切り替えたときに更新が中止される可能性があります。私は正確に覚えていないが、私はタイミングが理にかなっていると思う。

+0

データベースの切り替えに 'schema.rb'がどのように干渉するのかよくわかりません。 'rake db:migrate'を実行するとファイルが正しく更新されますか? (このRakeタスクを正常に実行するために、新しい移行を追加する必要はありません)。 – Raffael

+0

これは実行されませんでした。次回は何らかの方法でデータベースを更新しますが、これをテストします。今のところ@ smefjuの解決策は働いた。お返事をありがとうございます!そうです、それはデータベースを切り替えることとは関係がないようです。 –

答えて

2

rake db:schema:dumpを使用すると、現在のデータベース構造からファイルを再作成できます。

スキーマファイルはドライバとは独立しているため、sqlite3からPostgreSQLへの移行は問題ではありません。ファイル内の定義にversionが現在の現在の日付よりも大きくないことを確認してください。質問のスニペットにファイル全体を追加することもできます。

+0

ありがとう、これは固定! –

関連する問題