什么是Rails处理在现有模型上添加必需属性的方法

时间:2012-10-22 22:54:21

标签: ruby-on-rails-3 rails-migrations

例如,我最近在我的用户模型中添加了“地址”字段。它们正在通过存在进行验证。所以现在,当我去更新不同的属性时,例如发送电子邮件,我无法保存用户,因为它有无效字段(地址仍为空白)。

您是否只需要使用空字符串或其他内容迁移数据?

Rails处理此问题的方法是什么?

2 个答案:

答案 0 :(得分:2)

处理此问题的一种方法是在创建它的迁移中填充新字段。这样,您可以根据模型确保数据库中的所有内容都有效。 guide有一些关于这样做的指示 - 有几个问题。

另一种方法是指定验证仅在创建时运行,而不是在更新时使用:on选项运行。这可能看起来像:

validates :address, :presence => true, :on => :create

这样,任何新用户都必须设置地址,但您仍然可以编辑现有用户的其他属性。

答案 1 :(得分:1)

我建议您每次添加新字段并对其进行验证时进行迁移。 它将保持数据的完整性和一致性。

如果你真的想要做一个技巧,在验证时添加条件,在保存时有条件地设置“validate:false”,在修改现有记录时为地址字段添加空白值都是可以使用的技巧。

我还建议在添加地址时,创建地址模型并在需要它的其他模型中共享它,而不是仅在模型中添加字段。这将使您的验证更加灵活。