Mam model o nazwie Contact
z atrybutem o nazwie phone_number
. Mam kilka metod, takich jak zwyczaj setterJak używać atrybutów aktualizacji z metodami ustawiania niestandardowego w Railsach?
def prefix=(num)
self.phone_number[3..5] = num
end
Kiedy zadzwonić @contact.update_attributes({:prefix => '510'})
, nie otrzymuję żadnych błędów i @contact
zostanie zmienione, ale zmiany nie mogły przedostać się do bazy danych. Próbowałem użyć attr_accessible
, aby wyraźnie zezwolić na używanie tych metod ustawiania bezskutecznie.
Czy istnieje sposób, aby uzyskać dla mnie update_attributes
? Używam Rails 2.3.8.
Bah! To mnie za każdym razem. Dzięki, Kandada. – muirbot
'numer_telefonu_wymianę!' Nie jest potrzebny, jeśli na końcu metody wywołasz 'super num'. – Hendrik
@Hendrik tutaj staramy się zaktualizować ciąg w miejscu. Więc nie przechodzi przez brudne infra AR. Rzeczywisty atrybut to 'numer_telefonu', ale aktualizujesz prefiks. Nie ma 'super' dla' przedrostka ', ponieważ nie jest to atrybut DB. Zobacz dokumentację AR Dirty: http://api.rubyonrails.org/classes/ActiveModel/Dirty.html –