Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to Fix Conditional Validations in Rails Model?

I have the following validation in my User model. I don't want it to run when the user is a guest, so I added an 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

This calls the method guest_user? and shouldn't run when the user is a guest. However, the validation runs in all cases. How do I fix the unless proc so it works?

like image 781
am-rails Avatar asked Jun 06 '26 18:06

am-rails


1 Answers

Try

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
like image 72
bbozo Avatar answered Jun 08 '26 13:06

bbozo