如何修复Rails模型中的条件验证?

时间:2014-05-05 14:48:55

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

我的用户模型中有以下验证。当用户是访客时,我不希望它运行,因此我添加了unless proc:

with_options :unless => :guest_user? do |user|
    before_save { |user| user.email = email.downcase }
    validates :email, presence: true, uniqueness: {case_sensitive: false}
end

这会调用方法guest_user?,并且在用户是来宾时不应该运行。但是,验证在所有情况下都会运行。如何修复unless proc以使其有效?

1 个答案:

答案 0 :(得分:5)

尝试

with_options :unless => :guest_user? do |o|
    o.before_save { |user| user.email = email.downcase }
    o.validates :email, presence: true, uniqueness: {case_sensitive: false}
end