Cette méthode:Quand utiliser « auto » en 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
échoue avec cette erreur lorsque date
est nul:
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'
Cependant, si je change date = date.to_date
-self.date = self.date.to_date
, la méthode fonctionne correctement .
Que se passe-t-il? En général, quand dois-je écrire self
?
Modifier: Ce n'est pas lié à la question, mais s'il vous plaît noter qu'il n'y a pas de "titleize!" méthode.
duplicata possible de [Pourquoi les monteurs de rubis ont-ils besoin de "soi"? qualification dans la classe?] (http://stackoverflow.com/questions/44715/why-do-ruby-setters-need-self-qualification-within-the-class) –