2016-03-19 7 views
1

IWie self [: Name] arbeitet Schienen

def name 
self[:name] 
end 

Ich habe eine harte Zeit zu verstehen, selbst eine Leser-Methode in meinem Benutzer Modell erstellt [: Name]
es sieht aus wie ich einen Zugriff bin Wert mit einem Schlüssel in einem Hash
aber von was ich sagen kann, ist es kein Hash.

Ich habe versucht, auch Klassen in Ruby zu schaffen, dies zu emulieren, aber kann nicht sie i erhalten zu arbeiten, so "nicht sicher, ob dieser Rubin ist oder Schienen Sache, die ich nicht verstehen

Antwort

4

Active liefert ein [] method.:

[](attr_name)
Gibt den Wert des durch attr_name identifiziert Attribut, nachdem es typisieren wurde ...

So sagen self[:name] ist nur eine Runde über den Zugriff auf die name Attribut Ihres Modells.

[] ist ein Verfahren, wie jede andere in Ruby, können Sie Ihre eigene in jeder Klasse definieren können Sie wollen:

class C 
    def [](k) 
    # do whatever you want 
    end 
end 
c = C.new 
c[:pancakes] 

Active mit Daten verwendet wird, die, mehr oder weniger, ein Hash von einer relationalen gesichert Datenbank so sagen model[:attribute_name] ist ziemlich natürlich. Daher die Existenz der [] Methode.