Per tutta la mia applicazione self.
non è necessario fare riferimento al nome di un utente. name
funziona correttamente.Perché utilizzare "self" per accedere alle proprietà del modello ActiveRecord/Rails?
Perché il seguente codice richiede che self
funzioni come previsto?
class User< ActiveRecord::Base
before_save :validate_name
def validate_name
if self.name.nil? || self.name.empty?
self.name= "Mr. No Name"
end
end
A proposito, so che validates_presence_of
può essere usato per prevenire il salvataggio, ma voglio salvare con un default se non viene dato alcun nome.
Rails 3.0.7.
Siamo spiacenti, 'self.day' doveva essere' self.name'! Ho aggiornato la domanda. –
Nit: Ruby non prenderà mai 'x = y' come una chiamata al metodo. È sempre una variabile diretta (o costante, in base al caso). La forma 'x' (come espressione) dipende se esiste un tale' x' in ambito (come variabile) o meno. –
Se 'name' e' name = 'vengono aggiunti dinamicamente dopo che il file di classe viene analizzato, ci sono momenti in cui' name' significa 'self.name' e altre volte in cui' name' è una variabile locale? –