Witamy na naszej nowej stronie!

Właśnie uruchomiliśmy nową wersję naszej strony firmowej. Oczywiście do jej stworzenia wykorzystaliśmy te same technologie, w którym wykonujemy projekty dla naszych Klientów.

Konferencja RuPy 2008

W ostatni weekend byłem na RuPy 2008. Bardzo przyjemna i dobrze zorganizowana konferencja, zwłaszcza wykłady o charakterze ogólnym (tzn. wspólne dla Ruby i Pythona) były interesujące. Moją prezentację pod tytułem "Ruby on Rails - advanced SQL queries" można znaleźć tutaj.

callbacki przed save

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