Вы можете добавить проверку на класс заказа:
class Order < ActiveRecord::Base
validate :check_value_limit
def check_value_limit
errors.add(:value, "can not be greater than 450") if value > 450
end
end
ИЛИ в качестве примера для комментария Марка, приведенного выше, вам придется добавить ошибку в ваш объект и обработать исключение вручную. Это базовый пример обработки при создании.
обновить метод проверки, чтобы добавить ошибку к объекту:
customer.rb
def check_credit_limit(order)
#If a before_add callback throws an exception, the object does not get added to the collection.
if order.value > 450
errors.add(:base, "Value can not be greater than 450")
raise 'Value cannot be greater than 450'
end
end
пример обработки исключения при создании в вашем контроллере:
def create
@customer.new(params[:customer])
if @customer.save
…
else
render :action=>"new"
end
rescue
render :action=>"new"
end
Возможно, вы захотите добавить пользовательский тип исключения и специально спасти его, чтобы все другие исключения по-прежнему генерировались корректно.