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

Ruby on rails 如何修复Rails模型中的条件验证?,ruby-on-rails,validation,ruby-on-rails-4,Ruby On Rails,Validation,Ruby On Rails 4,我的用户模型中有以下验证。我不希望它在用户是来宾时运行,因此我添加了一个,除非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\u user?,当

我的用户模型中有以下验证。我不希望它在用户是来宾时运行,因此我添加了一个
,除非
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\u user?
,当用户是guest时不应运行该方法。但是,验证在所有情况下都会运行。如何修复
,除非
程序正常工作?

试试看

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

谢谢,成功了。铁路指南在这方面说得不够。