【发布时间】:2018-08-08 23:12:52
【问题描述】:
所以我在我的 Rails 项目中进行了这个迁移:
class CreateSettings < ActiveRecord::Migration[5.2]
def change
create_table :settings do |t|
t.string :frequency
t.text :emails, array: true, default: [].to_yaml
t.integer :reorder
t.timestamps
end
end
end
默认值最初是失败的,所以我创建了另一个迁移以删除该默认值:
class ChangeDefaultColumnForSetting < ActiveRecord::Migration[5.2]
def change
change_column_default(:settings, :emails, nil)
end
end
架构现在看起来不错,并且该默认值消失了,但是当我将其推送到 Heroku 并运行 heroku run rails db:migrate 时,它在最初的 CreateSettings 迁移中失败,因为它仍然包含默认值。即使我手动从第一次迁移中删除该默认值,我也会在 Heroku 中收到“预期 1 参数但得到 0”错误。
有什么想法可以解决这个问题吗?迁移在开发中有效,所以它一定只是 Postgres 问题(因为我在开发中使用 SQLite)。
【问题讨论】:
标签: ruby-on-rails postgresql heroku