Model.valid? = false, the model still saves

Kendall Buchanan wrote:

I have a model w/ three validations in PaymentApplication:

validate :total_applications_cannot_exceed_payment_amount validate :cannot_exceed_activity_price validates_numericality_of :amount

This might be a shot in the dark, I'm not completely sure what happens when calling validate with the symbol following, but are you sure the second call to validate override the first? I think there should be only one custom validation method on a model that does all your custom validations.

Try removing the second validate and add both symbols to one validate as shown in this example: class Invoice < ActiveRecord::Base   validate :expiration_date_cannot_be_in_the_past,     :discount_cannot_be_greater_than_total_value

  def expiration_date_cannot_be_in_the_past     errors.add(:expiration_date, "can't be in the past") if       !expiration_date.blank? and expiration_date < Date.today   end

  def discount_cannot_be_greater_than_total_value     errors.add(:discount, "can't be greater than total value") if       discount > total_value   end end