Custom validation

i’m trying to use a custom validation but for some reason it’s seems
like it is just getting ignored.

in my model:
before_save :validate

def validate
total_rank = 0

for compound_material in self.compound_materials
  total_rank += self.item.rank
end

avg_rank = total_rank / self.compound_materials.length

max_rank = avg_rank + 4

if self.item.rank > max_rank
   errors.add_to_base "The compound entered is not valid because it

is greater than rank " + self.item.rank
end
end

anyone know what i should be doing differently?

On Sun, Jul 27, 2008 at 10:47 PM, Scott K.
[email protected] wrote:

for compound_material in self.compound_materials
end
end

anyone know what i should be doing differently?

I believe that you need to return false from the filter in order to
halt the save process.

A better solution would be to use validates_each

http://api.rubyonrails.com/classes/ActiveRecord/Validations/ClassMethods.html#M001045

I believe that you need to return false from the filter in order to
halt the save process.

A better solution would be to use validates_each

Peak Obsession

thanks. returning false did the trick. I’m not sure if validate each
will work in this case because I am not actually validating a field for
this object. I was validating compound.item.rank.