Ich entwickle einen Online-Shop, und der Kunde benötigt die Möglichkeit, eine Bestellung zu löschen und seine Produkte automatisch aufzufüllen (z. B. für Testaufträge). Hier ist mein erster Versuch dies bei der Umsetzung:Sind Aliasing-Methoden verpönt?
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
Aber was, wenn ich brauche, später eine andere destroy_and_x
Methode zu schaffen? Warum nicht zulassen, dass X als Parameter an die destroy()
Methode weitergegeben wird? So, jetzt denke ich daran zu gehen:
Dies ist mehr erweiterbar, aber macht mich etwas schmutzig. Bin ich falsch, mich schmutzig zu fühlen? Gibt es einen besseren Weg, dies zu tun?
Was ist X? Das macht keinen Sinn. Wie viele Xs wird es geben? Lassen Sie sich nicht dazu verleiten, die Dinge ausnahmslos erweiterbar zu machen. – whatsisname
Sorgen Sie für Erweiterbarkeit, wenn Sie sie brauchen. Es ist schwer zu wissen, was zu erweitern ist, bis Sie einen realen Fall haben. –
X könnte "Erstattung", ich nehme an (wie in @ order.destroy_and_refund). –