我有一个包含用户名和角色以及公司的角色表。我想通过新的迁移文件将数据插入到该表中,那么我该怎么做呢?
我得到了这样的代码但我怎么能用它以及我无法理解的地方。
class Foo < ActiveRecord::Migration
def self.up
Users.new(:username => "Hello", :role => "Admin")
end
def self.down
Users.delete_all(:username => "Hello")
end
end
答案 0 :(得分:6)
此:
Users.new(:username => "Hello", :role => "Admin")
不会将数据插入表格中。它只是创建一个用户对象。要插入数据,您必须在您创建的对象上调用save
:
Users.new(:username => "Hello", :role => "Admin").save
或者更好的是,使用create
代替new
:
Users.create(:username => "Hello", :role => "Admin")
答案 1 :(得分:2)
您似乎仅使用此数据库迁移来填充数据。
数据库迁移用于更改数据库模式,而不是用于填充数据库(尽管可以在更改后添加一些逻辑来填充数据库;例如,如果向用户表添加列 - 角色,则可以添加一些自定义逻辑,用于为users表中的现有条目填充新添加的字段。有关详细信息,请参阅rails api - migrations。
如果您忘记添加代码以在之前的数据库迁移中填充数据库,则可以撤消先前的迁移并使用以下命令重新应用它:
rake db:rollback
... Edit the previous migration ..Add the code to populate
rake db:migrate
如果您只想填充数据库,则应该为数据库设定种子。请访问this railscast了解详情。
编辑:为数据库播种:
创建一个名为db / seeds.rb的文件 像这样添加记录创建代码:
['Sampath', 'Suresh'].each do |name|
User.create(role: 'admin', username: name)
end
然后,
rake db:seed
这将读取seeds.rb并填充数据库。