Questo metodo:Quando usare 'sé' in Ruby
def format_stations_and_date
from_station.titelize! if from_station.respond_to?(:titleize!)
to_station.titleize! if to_station.respond_to?(:titleize!)
if date.respond_to?(:to_date)
date = date.to_date
end
end
riesce con questo errore quando date
è nullo:
NoMethodError (You have a nil object when you didn't expect it!
The error occurred while evaluating nil.to_date):
app/models/schedule.rb:87:in `format_stations_and_date'
app/controllers/schedules_controller.rb:15:in `show'
Tuttavia, se cambio date = date.to_date
-self.date = self.date.to_date
, il metodo funziona correttamente .
Cosa sta succedendo? In generale, quando devo scrivere self
?
Modifica: Non è correlato alla domanda, ma si ricorda che non esiste "titleize!" metodo.
possibile duplicato del [Perché setter rubino bisogno di "sé". qualifica all'interno della classe?] (http://stackoverflow.com/questions/44715/why-do-ruby-setters-need-self-qualification-within-the-class) –