1
在已部署的应用程序,在我seeds.rb
,我有以下几点:如何在迁移中将数据添加到新创建的列中?
State.create!(:state => "Alabama")
State.create!(:state => "Delaware")
...
现在我想补充的两个字母的代码,每个状态。
所以我做了这样的迁移:
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
尚未运行。
所以,在AddStateCodeToStates
迁移UPDATE xxx
没有数据一起工作(states
表是空的,因为数据将从seeds.rb
填充),因此state_code
保持NULL
。
所以我的问题是(他们是如此相关,所以抱歉,没有要求他们为每个单独的问题):
- 如何填充
state_codes
重新创建数据库(states
表后,当有数据它)? - 我如何在部署应用程序的
state_codes
时rake db:migrate
(seeds.rb
不上rake db:migrate
运行) - 我应该不会在第一时间使用
seeds.rb
(而是把数据放到迁移)?