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 = Step.new

s.valid?

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