J'ai un modèle de vendeur qui possède plusieurs articles.
Je veux obtenir le prix de vente total de tous les articles d'un vendeur.
Dans seller.rb j'ai
def total_item_cost
items.to_a.sum(&:sale_price)
end
Cela fonctionne bien si tous les éléments ont un prix de vente.
Cependant, s'ils n'ont pas encore été vendus, sale_price
est nul et le total_item_cost
pauses.
Dans mon application, sale_price
peut être soit un zéro, soit un zéro.
Dans mon total_item_cost
méthode, comment puis-je traiter nil
comme des zéros ?
0 votes
Ne serait-il pas préférable de définir sale_price comme une méthode et de faire en sorte qu'elle renvoie toujours 0 ? C'est ce que je préfère personnellement, car cela permet de conserver toutes les connaissances sur le prix de vente là où elles doivent être, au lieu de les disperser dans toute l'application sous la forme de
if sale_price.nil?
.0 votes
Il s'agit en fait d'une vente aux enchères : un objet peut être "vendu" pour 0 (ce qui signifie que personne n'en veut). Donc nil signifie qu'il n'a pas encore été mis aux enchères, et zéro signifie qu'il a été adjugé. J'ai d'autres définitions pour garder une trace de tout cela.