我跑:
rails generate migration AddShowmsgColumnToPublishers show_msg:boolean
rake db:migrate
Run Code Online (Sandbox Code Playgroud)
但现在,我想将列的名称更改为"hide_msg"并将默认值设置为false.
我该怎么办?
我读过我必须做的事情:
第一步:
rails generate migration FixColumnName
class FixColumnName < ActiveRecord::Migration
def change
rename_column :publishers, :show_msg, :hide_msg
end
end
Run Code Online (Sandbox Code Playgroud)
第二步:
rails generate migration add_default_value_to_hide_msg
Run Code Online (Sandbox Code Playgroud)
第三步:将文件编辑为:
def up
change_column :profiles, :show_attribute, :boolean, :default => false
end
def down
change_column :profiles, :show_attribute, :boolean, :default => nil
end
Run Code Online (Sandbox Code Playgroud)
最后:
rake db:migrate
Run Code Online (Sandbox Code Playgroud)
但是一个命令没有别的办法吗?
您也可以在单个迁移中指定它们.例如
class FixColumn < ActiveRecord::Migration
def up
rename_column :publishers, :show_msg, :hide_msg
change_column :publishers, :hide_msg, :boolean, :default => false
end
def down
rename_column :publishers, :hide_msg, :show_msg
change_column :publishers, :show_msg, :boolean, :default => nil
end
end
Run Code Online (Sandbox Code Playgroud)
然后运行rake db:migrate.对我来说很好:)
| 归档时间: |
|
| 查看次数: |
2729 次 |
| 最近记录: |