すでにデプロイされているアプリケーションでは、私seeds.rb
の中には次のものがあります。
State.create!(:state => "Alabama")
State.create!(:state => "Delaware")
...
次に、州ごとに2文字のコードを追加したいと思いました。
だから私はこのような移行をしました:
class AddStateCodeToStates < ActiveRecord::Migration
def self.up
add_column :states, :state_code, :string
update(<<-SQL
UPDATE states SET state_code='WA' where state = 'Washington'
SQL
)
...lots of these SQL statement...
end
def self.down
end
end
問題は次のとおりです。
開発環境で、データベースを最初から再作成する場合、移行の実行後、その時点でseeds.rb
はまだ実行されていません。
したがって、UPDATE xxx
移行中のにAddStateCodeToStates
は、処理するデータがありません(states
データはから入力されるため、テーブルは空ですseeds.rb
)。したがって、はstate_code
残りNULL
ます。
だから私の質問は次のとおりです(それらはとても関連しているので、それぞれの別々の質問としてそれらを尋ねないことをお詫びします):
state_codes
データベースを再作成するとき(states
テーブルにデータが含まれた後)にデータを入力するにはどうすればよいですか?- デプロイされたアプリで
state_codes
いつ取得するか(で実行されない)rake db:migrate
seeds.rb
rake db:migrate
- そもそも使用すべきではありませんでしたか
seeds.rb
(代わりにデータを移行に入れるべきでしたか)?