我跑:
rails 生成迁移 AddHidemsgColumnToPublishers hide_msg:boolean
然后创建了下一个文件:
class AddHidemsgColumnToPublishers < ActiveRecord::Migration
def change
add_column :publishers, :hide_msg, :boolean
end
end
我想通过 false 为 hide_msg
设置一个默认值。
所以我尝试了:
rails 生成迁移 add_default_value_to_hide_msg
class AddDefaultValueToHideMsg < ActiveRecord::Migration
def up
change_column :publishers, :hide_msg, :boolean, :default => false
end
def down
change_column :publishers, :hide_msg, :boolean, :default => nil
end
end
但我有错误:
rake db:migrate
== AddHidemsgColumnToPublishers: migrating ===================================
-- add_column(:publishers, :hide_msg, :boolean, {:default=>false})
rake aborted!
An error has occurred, this and all later migrations canceled:
PG::Error: ERROR: column "hide_msg" of relation "publishers" already exists
: ALTER TABLE "publishers" ADD COLUMN "hide_msg" boolean DEFAULT 'f'
最佳答案
只是一个建议......不要在数据库中设置默认值,因为如果你想稍后更改它可能会遇到一些问题。
我认为最好在模型中设置它。
before_save :set_default_high_msg
def set_default_high_msg
self.high_msg ||= false
end
甚至在你的 Controller 中:
def new
@publisher = Publisher.new
@publisher.high_msg ||= false
...
end
关于ruby-on-rails - 列的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14734143/