die allgemeine Regel ist, wenn Sie sich selbst zu modifizieren durch Wert bis zu einem gewissen Attribute zuweisen, verwenden Sie ‚Selbst‘ ausdrücklich
self.first_name = 'Prasad' #if self isnt used, it will create a local variable.
und wenn Sie dieses Attribut verweisen (aber Modifizierung nicht), verwenden Sie nicht ‚Selbst "
def name
name.camelize
end
---- ----- UPDATE
wenn wir jedes Attribut zuzugreifen, Rubin prüft, ob Getter (Reader) und Setter (writer) Methoden für dieses Attribut sind d Definiert oder nicht.
Also im obigen Fall (wenn Sie einem Attribut einen Wert zuweisen), greifen Sie nicht direkt auf das Attribut zu, sondern übergeben den Wert an den Setter, der den Wert intern dem Attribut zuweist.
2.1.0p0 :008 > User.first.first_name
=> "Prasad"
2.1.0p0 :009 > (User.first.methods - Object.methods).include? :first_name
=> true
2.1.0p0 :010 > (User.first.methods - Object.methods).include? :first_name=
=> true
Sie können es versuchen, indem sie ein Verfahren zum jedem Modell Zugabe
def some_name
first_name = 'Some name'
puts self.first_name
self.first_name = 'Random Username'
puts self.first_name
end
und die Konsole neu zu laden und in Ruby
2.1.0p0 :017 > User.first.some_name
Prasad
Random Username
=> nil
Die Verwendung von 'self' schützt Sie nur vor möglichen Namenskonflikten mit lokalen Variablen gleichen Namens. –