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?

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?

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

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

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.