我建议您不要在迁移中插入任何新数据。相反,只修改迁移中的现有数据。
对于插入初始数据,我建议您使用 YML。在我设置的每个 Rails 项目中,我都会在 DB 目录下创建一个 fixtures 目录。然后我为初始数据创建 YML 文件,就像 YML 文件用于测试数据一样。然后我添加了一个新任务来从 YML 文件中加载数据。
lib/tasks/db.rake:
namespace :db do
desc "This loads the development data."
task :seed => :environment do
require 'active_record/fixtures'
Dir.glob(RAILS_ROOT + '/db/fixtures/*.yml').each do |file|
base_name = File.basename(file, '.*')
say "Loading #{base_name}..."
Fixtures.create_fixtures('db/fixtures', base_name)
end
end
desc "This drops the db, builds the db, and seeds the data."
task :reseed => [:environment, 'db:reset', 'db:seed']
end
db/fixtures/users.yml:
test:
customer_id: 1
name: "Test Guy"
email: "test@example.com"
hashed_password: "656fc0b1c1d1681840816c68e1640f640c6ded12"
salt: "188227600.754087929365988"