我使用此命令在rails中创建了一个迁移:
rails generate model Group name:string
我跑了rake db:migrate
。现在我想在' name'中添加一些属性。像唯一性和默认值。我有什么选择来实现这一目标?我必须为此创建新的迁移吗?
还要说我会生成一个名为“部门”的新模型。它还有一个唯一的默认值,有没有办法直接将这些选项添加到命令?
答案 0 :(得分:2)
好问题。这有点取决于一些事情,比如你是否在这个项目上与其他人合作,或者只是你。
如果它只是你,而你不介意失去你创建的所有Groups
,那么你可以rake db:rollback
并修改你的迁移文件。请注意,rake db:rollback
只会回滚1次迁移。要回滚x次迁移,rake db:rollback STEP=x
将适合您。
如果您正在与他人合作(或者此应用正在制作中),我建议您只创建另一个迁移文件。
rails g migration update_groups_name
def up
change_column :groups, :name, :string, default: 'foo'
add_index :groups, :name, unique: true
end
def down
change_column_default :groups, :name, nil
remove_index :groups, :name
end