I don’t know what you are trying to do. Are you trying to turn off
conditions based on a particular condition? I.E. “If a user submits
from form A then validate, if a user submits from form B then don’t
validate” ?
Sorry for the stress Andrew, but in my last posts I didn’t get any
answers.
I’m trying to turn off validations based on config. I have a constant
that tells me if I’m runnig a migration, and if I do, some validations
should be turned of.
That link will tell you how to set up a :if statement on a validation.
Basically, the :if should be a string (which will be run through an
eval), a
function (via it’s symbol name), or a Proc… whichever of the 3 it is,
it
should return true or false when evaluated.
If your requirements might change (you might add to or take away from
the
conditions), you’d be best off going with a function, if it’s VERY
simple
stuff (like what you have here) and it will never change, use a string.
If
you need access to the particularly object that the validation is being
called on, you can use a proc (or a function) that accepts an
argument…
The correct validations is:
validates_inclusion_of :objective, :in => Range.new(Date.today,
Date.new(y=4712)), :if => “:objective && Requirement.validatevalidation
_mig”
,:message => “bla bla bla”
From what I can tell, the correct validation is
validates_inclusion_of :object, :in => Range.new(Date.today,
Date.new(y=4712)),
:if => “Requirement.perform_validation”, :message => “blah blah blah”
You don’t need to validate the field in the validation test for the
field…
you’re completely missing the point of the :if statement.
If you absolutely HAVE to have that in there, I would change the :if to
:if => Proc.new { |m| m.objective && Requirement.perform_validation }
I still have absolutely no clue where that whole validatevalidation_mig
stuff is coming from… but I’m pretty sure what I said is what you’re
looking for.
From what I can tell, the correct validation is
validates_inclusion_of :object, :in => Range.new(Date.today,
Date.new(y=4712)),
:if => “Requirement.perform_validation”, :message => “blah blah blah”
You don’t need to validate the field in the validation test for the
field…
you’re completely missing the point of the :if statement.
If you absolutely HAVE to have that in there, I would change the :if to
:if => Proc.new { |m| m.objective && Requirement.perform_validation }
I still have absolutely no clue where that whole validatevalidation_mig
stuff is coming from… but I’m pretty sure what I said is what you’re
looking for.
Thanks for the reply Luke!
I have the validation of the fieldin the if statement because i wan’t to
validate if the field is in the correct Range if the user inserts
something, if he does not, the message is different… that
validation_on mig is the Requirement.perform_validation… I changed the
method name… sorry for the mess…, I’m gonna try with Proc.new…
And for a little explanation, if I’m not wrong, I’m making a new
procedure on the fly, the m is my own instance and the other part of the
&& is a call to my own static method… great
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.