How can I DRY this up?

Hey all!

Hope you're having a good weekend.

I have a couple of models that share a lot of similar validation so I
figured this would be a good opportunity to DRY my code up.

lets say for example:

class Squirrel < ActiveRecode::Base

  validates_presence_of :name

end

class Badger < ActiveRecode::Base

  validates_presence_of :name

end

what I've been trying to do is add a module in /lib called
CommonValidations

module CommonValidations

  def included(base)
    base.class_eval do
      validates_presence_of :name
    end
  end
end

and then include this module in the models that require it. I've also
tried various combinations with 'eval' and 'send' etc.

The validations aren't called :frowning:

Can anyone explain why this isn't working and if it's possbile to re-
use validations like this?

Thanks

Gavin

module CommonValidations

def included(base)
base.class_eval do
validates_presence_of :name
end
end
end

and then include this module in the models that require it. I've also
tried various combinations with 'eval' and 'send' etc.

Did you check to see whether your included method is called at all ?
The included method needs to be a module method, i.e.

def self.included(base)
...
end

for it to be used the way you want it to be used.

Fred

Ha!

Rookie error

Thanks for that Fred.

:slight_smile: