Hi
I have in my user model
attr_accessor :no_password_validation_needed
with_options :unless => :no_password_validation_needed do |p|
p.validates_length_of :password, :minimum => 6
p.validates_confirmation_of :password
end
And from controller I do
@user.no_password_validation_needed = false
@user.update_attributes(params[:user])
And it works perfectly and now validation happens. If it is
@user.no_password_validation_needed = true
Then also I get the expected result as now validation not happens
But now when
@user.no_password_validation_needed = 2 #or any other value
Now I get unexpected result as validation not happens That is
same result when true? Why this?What modification should I make?Please
help
Thanks in advance
Tom
1 Like
On Mar 24, 6:09 am, Tom M. [email protected] wrote:
But now when
@user.no_password_validation_needed = 2 #or any other value
Now I get unexpected result as validation not happens That is
same result when true? Why this?What modification should I make?Please
help
That’s how truth values work in ruby - anything other than nil or
false is generally considered true.
Fred
Does this help?
irb
puts “show” if true
show
puts “show” if false
=> nil
puts “show” if nil
=> nil
puts “show” if 2
show
puts “show” if DateTime.new
show
In ruby it’ll be true unless it receives nil or false.
Kind Regards
Luke
On 24 March 2010 08:07, Frederick C. [email protected]
wrote:
That’s how truth values work in ruby - anything other than nil or
false is generally considered true.
Have a look at the Ruby F.s library for their “kernel.true?” method:
http://facets.rubyforge.org/apidoc/api/core/classes/Kernel.html#M000436
It only returns true for a TrueClass object.
If you don’t want to install the whole library, you can write a monkey
patch of your own to add this functionality.