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

On Fri, Mar 26, 2010 at 2:36 AM, Hugo M. [email protected] wrote:

def Wrk < ActiveRecord::Base
Posted via http://www.ruby-forum.com/.


Mahmoud Said
Software Engineer - eSpace

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:

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

On Fri, Mar 26, 2010 at 2:36 AM, Hugo M. [email protected] wrote:

def Wrk < ActiveRecord::Base
Posted via http://www.ruby-forum.com/.


Mahmoud Said
Software Engineer - eSpace
blog.modsaid.com

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

On Fri, Mar 26, 2010 at 8:09 PM, Emre [email protected] wrote:

Emré.

To do this I need to call directly the validates_numericality_of class

value. or
Software Engineer - eSpace
[email protected][email protected]
.
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.


Mahmoud Said
Software Engineer - eSpace