2009-07-13 17:12 / marek / 0 komentarzy
2008-04-15 06:22 / marek / 0 komentarzy
Co jest złego w takim kawałku kodu:
class User
def before_create
self.active = true
self.blacklisted = false
end
end
Z pozoru nic. Ale spróbujmy teraz stworzyć użytkownika - za każdym razem dostaniemy ActiveRecord::RecordNotSaved.|Dlaczego tak się dzieje? Po prostu wartością zwracaną przez metodę (jeśli nie jest jawnie wywoływany return) jest wartość ostatniego wyrażenia - w tym przypadku false. A ponieważ callback before_create oprócz możliwości inicjalizacji służy też jako filtr, więc wartość false oznacza, iż obiekt nie zostanie zapisany.
Jak w łatwy sposób zmienić omawianą metodę, żeby zadziałała poprawnie? Wystarczy zamienić linie:
class User
def before_create
self.blacklisted = false
self.active = true
end
end
A żeby nie mieć problemów w przyszłości warto wyrobić sobie nawyk dodawania
2008-03-10 23:09 / marek / 0 komentarzy