Ive ha il seguente problema. Ho un modello chiamato utente che ha una colonna chiamata attivata. Sto cercando di aggiornare quel valore con il metodo attivato ?, ma mi dà l'errore: Convalida fallita: la password non può essere vuota, la password è troppo corta (minimo 6 caratteri) Che non ha senso per me, perché non sto toccando il campo password! Voglio solo aggiornare la colonna attivata. Sto mettendo qui il codice che ritengo rilevante, ma se pensi di aver bisogno di più basta chiedere :) Grazie mille in anticipo!Rails update_attribute
Modello:
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
controller da cui il metodo attivato? si chiama
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
La ringrazio molto! In realtà l'avevo già fatto prima, ma non funzionava per un altro motivo. Ma è tutto ok ora :) – gumlym