2010-06-24 14 views
8

Ich habe gerade angefangen, Rails (3) zu lernen. Ich reiße mir die Haare aus und versuche herauszufinden, wie ich etwas tun kann, das vermutlich völlig trivial ist: Greife auf den Wert des Feldes einer Modellinstanz zu, ausgehend von einer Methode dieses Modells.Rails: Zugriff auf Feldwert von Modellmethode

In meinem Fall:

def formal_name 
    @title + " " + @forename + " " + @surname 
end 

Alle drei @properties (die alle Felder auf dem Tisch in der Datenbank vorhanden sind) zurückkehren nil. Sie sollten nicht.

Unglaublich, wie auf Felder zuzugreifen ist nicht unter http://guides.rails.info/ diskutiert, und Google stellt nichts.

BTW, ich komme aus Django, wo dieses Zeug offensichtlich ist.

Antwort

10

Die @ -Syntax wird für Instanzvariablen verwendet, die (z. B.) in Steuerungen aufgefüllt und dann in Sichten verwendet werden. Nicht, was du hier machst.

Sie tatsächlich brauchen nur

def formal_name 
    title + " " + forename + " " + surname 
end 
0

Sie müssen das @ weglassen, Sie greifen über Getter-Methoden auf sie zu. In einigen Fällen müssen Sie aufgrund von Mehrdeutigkeiten self.<field> verwenden.

0
class MyModel << ActiveRecord 

    def formal_name 
    title = self.title # return title attribute of instance 
    forename = self.forename 
    surename = self.surname 

    # or something like this 
    self.title + self.surename 
    end 

end 
+1

Warum 'self.fieldname' hier und nur' fieldname' in der anderen Antwort? Lässt dich 'self' nur spezifischer über den Umfang sein? z.B. Wenn Sie eine lokale Variable in der Methode mit demselben Namen wie das Feld deklarieren würden? –

Verwandte Themen