views:

187

answers:

1

I would like to validate attributes in a function like this

class User < ActiveRecord::Base

  validate :check_name( :name )

  def check_name( name )
    ... if name is invalid ...
       self.errors.add( :name, 'Name is invalid')
  end

end

Can you please write the right code? Please explain the functionality why... THX!

+4  A: 
class User < ActiveRecord::Base

  validate :check_name

  def check_name
    if name # is invalid ...
      self.errors.add(:name, 'Name is invalid')
    end
  end

end

You can use the validate macro but the method can't accept parameters. You need to fetch the attribute value from inside the method, then validate it.

Replace

if name # is invalid ...

with your own validation logic.

Simone Carletti