Custom validation

Hi all,

I need to call validation methods from outside the models. This is a workflow application so the models don't have validation methods declared in it.

Example: class Step < ActiveRecord::Base end

def Wrk < ActiveRecord::Base   has_many :steps end

I've tried using for instance Step.validates_numericality_of(...) or Wrk.validates_format_of(...) but it does not work.

Can anyone help me? Best regards, Hugo

I believe you are not thinking in the proper use of validations.

What you want to do is:

s =


s.errors.on(attribute_to_be_validated) #returns nil for a valid value. or the error message in case the validation was not met

Hi Mahmoud,

Thanks for the info but the problem here is that my model does not have any validations declared because they depend on the workflow that the user sets.

For instance, the user can set that in the Step 1 of the Workflow he wants to validate that a given attribute is greater than 300. To do this I need to call directly the validates_numericality_of class method:

Step.validates_numericality_of(:attribute, :greater_than => 300)

Best regards, Hugo

Mahmoud Said wrote:

The validations method you're trying to call is not a class method, it's a validation helper so you can't call object.validation_method (in this case Step.validates_numericality_of(...)).

The best way would be to declare customs validations if you want to call them outside your class and then handle exception (begin/rescue etc.), you should also use object.errors.add(attribute, 'custom error message').

Cheers, Emré.

exactly like Emre told u. just keep in mind when u have to clear the errors if that depends on the state