私は、次のような関係があります。Rails - 親モデルは、それに属するモデルの属性値を検証できますか?私のアプリで
- 順序があり、多くのORDER_ITEMSを
- ORDER_ITEMつの製品
- ORDER_ITEMは、数量のプロパティを(ユーザー 順序でどのくらい?)ありあり
- そして最後に、製品が注文を提出する前に財産の株式(どのくらい残っている?)
を持って、私はそれを確認します注文数量を満たすのに十分な在庫がありますが、私はこの検証をどこで行うべきかわかりません。
私は更新アクションの前に在庫レベルをチェックし、更新前のアクションを持っている瞬間:
def check_stock
check_results = @order.order_items.collect do |item|
if (item.product.stock < item.quantity)
flash.now[:danger] = "Sorry, it looks like we're out of some of those things"
false
else
true
end
end
if check_results.include?(false)
render "show"
return false
else
@order.order_items.each do |item|
item.remove_stock
end
end
end
それはそれは更新アクションの仕事とブロックだんが、それは非常にエレガントではありません。誰かがより良い方法を知っていますか?フォームを操作することによってorder_itemの数量値を検証する方法があるように感じるようですが、実際にどうやってどうやって行くのかは分かりません。
で
validates_associated :order_items
を追加しをorder_item.rbする
validate :validate_stock
を追加します。ありがとう! –