如何在Ruby中正确编写只在create上验证

时间:2013-12-24 09:31:19

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

我现在对我的用户模型进行了验证:

validates :email,
            presence: true,
            uniqueness: { :case_sensitive => false }

我想添加:on create的唯一性,因为用户肯定可以通过发送相同的电子邮件来更新他们的电子邮件!

我应该这样写吗?我担心on:create也适用于presence:true,但它只适用于唯一性验证:

validates :email,
             presence: true,
             uniqueness: { :case_sensitive => false }, on: :create

2 个答案:

答案 0 :(得分:1)

是的,它将适用于您可以对该

使用单独的验证
validates :email,  presence: true

validates :email, uniqueness: { :case_sensitive => false }, on: :create

答案 1 :(得分:1)

我想说一些逻辑。电子邮件应该是唯一的,用户将通过他的电子邮件识别。因此,在更新时,无需将电子邮件字段放在用户可以编辑电子邮件值的位置。您可以将电子邮件字段设置为只读,以便用户在更新配置文件时无法更改它。

是的,语法on: :create是一个很好的解决方案。