Mam następujący problem. Mam model o nazwie użytkownik, który ma kolumnę o nazwie aktywowane. Próbuję zaktualizować tę wartość z aktywowaną metodą ?, ale daje mi błąd: Walidacja nie powiodła się: Hasło nie może być puste, Hasło jest zbyt krótkie (minimum 6 znaków) Co nie ma sensu dla mnie, ponieważ nie dotykam pole hasła! Chcę tylko zaktualizować aktywowaną kolumnę. Zakładam tutaj kod, który moim zdaniem jest trafny, ale jeśli uważasz, że potrzebujesz więcej tylko zapytaj :) Z góry bardzo dziękuję!Szyny update_attribute
Model:
attr_accessor :password
attr_accessible :name, :email, :password, :password_confirmation, :activated
has_many :sucu_votes
email_regex = /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i
validates :name, :presence => true,
:length => { :maximum => 50 }
validates :email, :presence => true,
:format => {:with => email_regex},
:uniqueness => { :case_sensitive => false }
validates :password, :presence => true,
:length => { :within => 6..15 },
:confirmation => true
before_save :encrypt_password
def activated?
self.update_attributes!(:activated => true)
return self.activated
end
Kontroler z których aktywna metoda? nazywa
def activate
if request.get?
user=User.find_by_id(params[:id])
if user.activated?
flash[:notice]="Your account has been activated"
#redirect_to :controller => 'sessions', :action => 'new'
else
flash[:error]="We couldnt activate the account"
redirect_to :controller => 'sessions', :action => 'new'
end
end
end
Dziękuję bardzo! Tak naprawdę miałem to wcześniej, ale nie działało z innego powodu. Ale teraz wszystko w porządku :) – gumlym