validates_inclusion_of disabling

Yeah, no answers in 4 hours! Rails must suck!

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" ?

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.

validates_inclusion_of :test, :if => “:some_field && MyModel.some_static_stuff”
validates_inclusion_of :test, :if => :is_migration?

def is_migration?
:some_field && MyModel.some_static_stuff"

or even

validates_inclusion_of :test, :if => { :some_field && MyModel.some_static_stuff }

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…

validates_inclusion_of :name, :if => { |user| user.should_have_name? }

What is the :objective check in the :if supposed to be doing?
What is the validate_on_mig function doing?

I don’t see you calling the self.perform_validation from anywhere, is it necessary?

The correct validations is:
validates_inclusion_of :objective, :in =>
(,, :if => “:objective && Requirement.validatevalidation
,:message => “bla bla bla”

From what I can tell, the correct validation is

validates_inclusion_of :object, :in =>,, :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 => { |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.

You’re welcome :slight_smile: