Tengo el siguiente problema. Tengo un modelo llamado usuario que tiene una columna llamada activada. Estoy tratando de actualizar ese valor con el método activado ?, pero me da el error: Validación fallida: la contraseña no puede estar en blanco, la contraseña es demasiado corta (mínimo 6 caracteres) Lo cual no tiene sentido para mí, porque no estoy tocando el campo de contraseña! Solo quiero actualizar la columna activada. Estoy poniendo aquí el código, creo que es relevante, pero si crees que necesitas más, solo pregunta :) ¡Muchas gracias de antemano!Rails update_attribute
Modelo:
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
Controlador de la cual activa el método? se llama
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
Muchas gracias! De hecho, ya lo tenía antes, pero no funcionaba por otra razón. Pero todo está bien ahora :) – gumlym