2016-04-25 17 views
-1

Ich habe ein Company Modell und ein Payment Modell.So erstellen Sie eine benutzerdefinierte Methode für meine Schienen Modell

Für mein Modell Company möchte ich eine benutzerdefinierte (Klasse/Instanz?) Methode erstellen, die ein Summenprodukt der zugeordneten Attribute eines ausgewählten Unternehmens ausführt.

Mein Company Modell:

def total_payments 
    self.payments.map { |s| s.value * s.currency }.sum 
end 

Allerdings, wenn ich Company.first.total_payments laufen es gibt mir ein no_method_error.

Wie definiere ich meine Methode richtig?

Antwort

2

Es scheint alles gut, nur neu laden Sie Ihre Rails-Konsole. Rails wendet Änderungen in Ihren Klassen nicht sofort an.

+0

Ja tatsächlich, du hast Recht. Frage: Wird dies eine Instanzmethode oder eine Klassenmethode genannt? Versuche hier etwas zu lernen :-) – Matthias

+0

'total_payments' ist eine Instanzmethode. – Ilya

+0

Es sieht so aus, als ob ich es tatsächlich auslassen kann, "self" zu nennen und direkt auf "payments" zu verweisen. Ist das auch deine Erfahrung? – Matthias