将属性值重置为默认值

sup*_*ize 5 activerecord ruby-on-rails

我想知道如何将模型属性和可能的​​关联设置为其默认值。

user = User.find_by(name: "Martin")
user.phone = 012345
user.save!
# some time later
user.phone = # set to default
user.save!
Run Code Online (Sandbox Code Playgroud)

And*_*eko 2

设置列默认值的选项很少:

  1. 设置迁移中的默认值(首选)
  2. before_*在回调中设置默认值

恢复为默认列的值,您可以使用ActiveRecord::ConnectionAdapters::SchemaCache#columns_hash

user.phone = user.class.columns_hash['phone'].default
Run Code Online (Sandbox Code Playgroud)