В уже развернутом приложении, в моем 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
еще не был выполнен.
Таким образом, UPDATE xxx
в миграции AddStateCodeToStates
не имеет данных для работы (таблица states
пуста, поскольку данные будут заполняться из seeds.rb
), поэтому state_code
остается NULL
.
Итак, мои вопросы (они так связаны, извините, что не задавали их как каждый отдельный вопрос):
- Как заполнить
state_codes
при воссоздании базы данных (после того, как в таблице states
есть данные)?
- Как получить
state_codes
, когда rake db:migrate
на развернутом приложении (seeds.rb
не работает на rake db:migrate
)
- Разве я не должен был использовать
seeds.rb
во-первых (и вместо этого поместить данные в миграции)?