私はオンライン ストアを開発していますが、顧客は注文を削除して、商品を自動的に補充する機能を必要としています (たとえば、テスト注文の場合)。これを実装する最初の試みは次のとおりです。
class Order < ActiveRecord::Base
def destroy_and_restock
restock_products
destroy
end
protected
def restock_products
line_items.each do |li|
li.product.quantity_on_hand += li.quantity
li.product.save
end
end
end
destroy_and_x
しかし、後で別のメソッドを作成する必要がある場合はどうすればよいでしょうか? X をパラメーターとしてdestroy()
メソッドに渡すことを許可しないのはなぜですか? だから今、私はこれで行くことを考えています:
alias :old_destroy :destroy
def destroy(options = {})
if options['restock'] == true
restock_products
end
old_destroy
end
protected
def restock_products
line_items.each do |li|
li.product.quantity_on_hand += li.quantity
li.product.save
end
これはより拡張可能ですが、私はやや汚いと感じます。汚いと感じるのは間違っていますか?これを行うより良い方法はありますか?