0
before_addブロックで例外を発生させるrailsガイドによると、多くの場合、オブジェクトがコレクションに追加されなくなります。しかし、例外の発生はactive_recordによって処理されません。has_manyコレクションにアイテムを追加中に制限する
class Order < ActiveRecord::Base
belongs_to :customer
end
class Customer < ActiveRecord::Base
has_many :orders, :before_add => :check_credit_limit
def check_credit_limit(order)
#If a before_add callback throws an exception, the object does not get added to the collection.
raise 'Value cannot be greater than 450' if order.value > 450
end
end
Failure/Error: customer.orders << order
value cannot be greater than 450
これを正常に処理するにはどうすればよいですか?
あなたは 'order'モデルで検証していませんか? –
はいオーダーモデルではできますが、 のような他のシナリオでは、order.value> 450およびself.type == 'Normal''の場合、' raise '値は450より大きくできません。優雅に例外を処理してください –
私はあなたが何を求めているのか分かりません。例外を発生させる場合は、それを自分で処理し、レスキュー方法を理解する必要があります。 –