如何在以后验证某些模型属性

时间:2014-11-20 10:42:28

标签: ruby-on-rails model devise rails-activerecord

我有一个由User创建的Devise模型,在创建之后,我添加了一些额外的属性:username, age, year, gender和我自己的验证......

问题是,我想要一个页面将自己注册为用户,要求您提供用户名,电子邮件和密码。

一旦您注册,就会有一个页面Profile,您可以在其中填写其余信息。例如,它会有telephone numberfirst name。你可以放或不。但是如果你放了东西,它会验证。如果它为空,则不会对模型的该属性执行任何版本,然后将执行 NO VALIDATION

两个页面都处理相同的模型,但会在不同的时刻添加信息。

当您尝试在注册页面中注册用户时,会出现问题。 Rails会抱怨,因为我没有提供的其他属性正在被模型验证(当我不希望模型验证它们时,至少对于那个页面而言)。

我如何决定每一时间验证的内容?

2 个答案:

答案 0 :(得分:1)

如果添加它们总是可选的,那么您可以进行条件验证

validates :first_name, presence: true, if: :first_name?

如果您只想在创建后验证它们,可以使用

validates :first_name, presence: true, on: :update

答案 1 :(得分:0)

我想你应该删除你的个人资料页面中的字段的所有验证。 您可以在用户模型中的个人资料页面上保存详细信息之前从模型中调用方法。 该方法将检查这些字段所需的验证。