2016-03-19 6 views
1

Bit eines Anfänger Frage hier ... in meiner Rails App Ich habe ein Modell für Teile und ich möchte Admin in der Lage sein, einen Rabatt auf den Preis des Teils anwenden, wenn sie wollen. Der Wert des Rabattes in meinem Teilemodell ist eine Ganzzahl. Ich habe eine Methode in meinem Teil Modell apply_discount genanntRuby/Rails Prozentsatz zu Dezimal

class Part < ActiveRecord::Base 
    has_many :order_items 
    belongs_to :category 
    default_scope { where(active: true)} 

    def apply_discount 
    new_price = self.discount.to_decimal * self.price 
    self.price - new_price 
    end 

Der Fehler, den ich bekommen habe ist, „nicht definierte Methode` to_decimal‘für 10: Fixnum“ , wenn Sie in einem Prozentsatz des Rabatts setzen. Irgendwelche Ideen, wie ich den Rabatt richtig in einen Float oder in eine Dezimalzahl konvertieren kann? Danke

Antwort

6

Es gibt keine to_decimal Methode für Integer, aber es gibt eine to_f (zu floaten). Sie müssen durch 100 teilen, um den Rabattprozentsatz zu erhalten, um zu arbeiten.

Außerdem müssen Sie self. nicht verwenden, außer Sie zuweisen.

def apply_discount 
    price - (discount.to_f/100 * price) 
end 
+0

vielen dank! Lief wie am Schnürchen – Dan