确定:
User
attr_accessible :name, :email, :email_confirmation
validates_presence_of :email_confirmation if :email_changed?
在以下情况下会发生什么:
u = User.find 1
u.name = 'Fonzi'
u.name_changed? # => true
u.email_changed? # => false
u.valid? # => false : email_confirmation is required
基本上,如果我更改if除非验证按预期工作,否则不会验证电子邮件是否未更改,将验证电子邮件是否已更改。我认为IF表示“如果以下函数返回true,则运行此验证。似乎向后工作!?我只是错了吗?
答案 0 :(得分:4)
你的语法有点混淆了条件验证。您可以向验证方法传递一个名为“if”的选项,其值为方法,过程或字符串,而不是使用常规的后置修复条件。所以看起来应该更像这样:
validates_presence_of :email_confirmation, :if => :email_changed?
查看完整独家新闻的documentation。