例如,我最近在我的用户模型中添加了“地址”字段。他们正在通过存在来验证。所以现在,当我去更新一个不同的属性时,例如电子邮件,我无法保存用户,因为它有无效的字段(地址仍然是空白的)。
您只需要使用空白字符串或其他东西迁移数据吗?
Rails 的处理方式是什么?
例如,我最近在我的用户模型中添加了“地址”字段。他们正在通过存在来验证。所以现在,当我去更新一个不同的属性时,例如电子邮件,我无法保存用户,因为它有无效的字段(地址仍然是空白的)。
您只需要使用空白字符串或其他东西迁移数据吗?
Rails 的处理方式是什么?
处理此问题的一种方法是在创建它的迁移中填充新字段。这样,您可以确保数据库中的所有内容根据模型都是有效的。该指南有一些关于这样做的指示 - 有几个问题。
另一种方法是通过选项指定验证仅在创建时运行,而不是在更新时运行:on
。这可能看起来像:
validates :address, :presence => true, :on => :create
这样,任何新用户都必须设置地址,但您仍然可以编辑现有用户的其他属性。
我建议您每次添加新字段并对其进行验证时进行迁移。它将保持数据的完整性和一致性。
如果您真的想要做一个技巧,在验证中添加条件,在保存时有条件地放置“验证:false”,在修改现有记录时为地址字段添加空白值,所有这些都是您可以使用的技巧。
我还建议,当您添加地址时,创建一个地址模型并在需要它的其他模型中共享它,而不是仅在模型中添加字段。这将使您的验证更加灵活。