Self.number a self[:number]

Witam

Jak jest różnica gdy w modelu piszę self.number a self[:number]?

Pozdrawiam

Niewielka. self.number wywali błąd jeśli nie ma takiego atrybutu, self[:number] zwróci nil.

2 rozne implementacje, self[:number] jest chyba wolniejsze poniewaz kod jest wykonywany na bierzaco, natomiast kod self.number bedzie zdefiniowane tuz po utworzeniu obiektu. W przypadku np kolumn DateTime self[:created_at] bedzie wykonywalo typecast za kazdym uzyciem, natomiast self.created_at wykona typecast raz, a nastepnie bedzie pobieral wartosc z cache az do przeladowania calego obiektu.