gpt4 book ai didi

ruby-on-rails - 列的默认值

转载 作者:行者123 更新时间:2023-12-03 12:18:23 24 4
gpt4 key购买 nike

我跑:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com