W całym zgłoszeniu self.
nie jest konieczne odwoływanie się do nazwy użytkownika. name
działa dobrze.Po co używać "self", aby uzyskać dostęp do właściwości modelu ActiveRecord/Rails?
Dlaczego poniższy kod wymaga, aby self
działał zgodnie z przeznaczeniem?
class User< ActiveRecord::Base
before_save :validate_name
def validate_name
if self.name.nil? || self.name.empty?
self.name= "Mr. No Name"
end
end
Nawiasem mówiąc, wiem, że validates_presence_of
może być stosowany w celu zapobiegania uratować, ale chcę zapisać się domyślnie, jeśli nie jest podana nazwa.
Szyny 3.0.7.
Przepraszam, 'self.day' miał być' self.name'! Zaktualizowałem pytanie. –
Nit: Ruby nigdy nie weźmie 'x = y' do wywołania metody. Jest to zawsze zmienna bezpośrednia (lub stała, w zależności od przypadku). Forma 'x' (jako wyrażenie) zależy od tego, czy istnieje taki' x' w zakresie (jako zmienna) czy nie. –
Jeśli 'name' i' name = 'są dodawane dynamicznie po sparsowaniu pliku klasy, to czy są takie chwile, kiedy' name' oznacza 'self.name' i inne czasy, gdy' name' jest zmienną lokalną? –