【问题标题】:How to set default value for new objects only, in Rails Migration?如何在 Rails Migration 中仅为新对象设置默认值?
【发布时间】:2017-08-20 20:58:15
【问题描述】:

我知道如何为 rails 中的列设置默认值,但我经常发现自己处于这种情况,例如:
一个名为“已解决”的布尔字段,其默认值为 false
在我这么说之前不会结算所有新对象,但我需要结算所有旧对象

我总是做一个 rake 任务来切换所有旧对象,有没有办法在迁移中做到这一点,但不是作为脚本,而是将一个值设置为旧对象的默认值,而不是未来的默认值架构

【问题讨论】:

  • 这里的意思是defaultchange_column_null(table_name, column_name, null, default = nil),它将现有的 +NULL+s 替换为其他值。

标签: ruby-on-rails rails-migrations


【解决方案1】:

您可以在迁移中简单地执行此操作:

add_column :users, :is_banned, :bool
User.update_all(is_banned: false)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 2016-01-19
    • 2010-09-24
    • 1970-01-01
    • 2018-03-19
    • 2015-01-25
    相关资源
    最近更新 更多