gpt4 book ai didi

ruby-on-rails - Rails 无法使用 NOW() 默认值创建迁移到 Postgres

转载 作者:行者123 更新时间:2023-11-29 11:23:31 25 4
gpt4 key购买 nike

我常用的方法是

psql > ALTER TABLE 事务 ALTER COLUMN 日期 SET DEFAULT CURRENT_TIMESTAMP\g

它工作正常。

在我的 RoR 应用程序中,我尝试以两种方式创建迁移。

1.

class TransactionsSetDefaultDateChange < ActiveRecord::Migration
change_column :transactions, :date, :datetime, :null=>false, :default=>'CURRENT_TIMESTAMP'
end

2.

class TransactionsSetDefaultDateChange < ActiveRecord::Migration
execute <<-SQL
ALTER TABLE transactions ALTER COLUMN date SET DEFAULT CURRENT_TIMESTAMP
SQL
end

都失败了。有什么想法吗?

PS 此案例适用于迁移(“rake db:migrate”),但未正确应用于“rake db:setup”(丢失 SQL 语句)

class TransactionsSetDefaultDateChange < ActiveRecord::Migration
def change
execute <<-SQL
ALTER TABLE transactions ALTER COLUMN date SET DEFAULT CURRENT_TIMESTAMP
SQL
end
end

最佳答案

对于 Rails 5+ 这现在有效

... null: false, default: -> { 'NOW()' } ...

在 Postgresql 修改器中产生类似的东西

not null default now()

关于ruby-on-rails - Rails 无法使用 NOW() 默认值创建迁移到 Postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17000635/

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