我需要添加更改密码'我目前正在构建的应用的功能,但当我尝试更改用户的密码时,我收到以下错误:
专栏' nivelAcceso'不能为空;用户的密码和' nivelAcceso' (用户在应用程序中具有的访问权限)可以在同一个表格(usuarios)中找到,但它们并没有任何关联。
处理密码更改的路由如下所示:
app.rb
put '/:id' do
change_password(params[:id], params[:password], params[:confirm])
end
虽然控制器看起来像:
password_controller.rb
def change_password(id, password, confirm)
if password.nil? || confirm.nil?
redirect '/dashboard/change_password', error: 'Debe completar todos los campos.'
elsif password != confirm
redirect '/dashboard/change_password', error: 'Los campos no coinciden.'
else
u = User.find(id)
new_password = BCrypt::Password.create(password)
u.passwordUsuario = new_password
if u.save
redirect '/dashboard/change_password', notice: 'Cambio de contraseña exitoso.'
else
redirect '/dashboard/change_password', error: 'Ha ocurrido un error, intente nuevamente.'
end
end
end
到目前为止,我已尝试以下方法但无济于事:
u.nivelAcceso = session[:rol] # 'nivelAcceso' value is stored in the session
答案 0 :(得分:0)
ActiveRecord表示该列不能为空。这通常是由于数据库以这种方式配置。
如果使用ActiveRecord迁移配置数据库,请查找以下内容:
create_table(:cars) do |t|
# other commands
t.string :foo, null: false
end
您可以通过编写和运行新迁移来更改此内容:
change_column :table_name, :foo_column, :string, null: true
答案 1 :(得分:0)
原来改变密码的路线与编辑用户的路线完全相同。
原创,非工作路线:
put '/:id' do
change_password(params[:id], params[:password], params[:confirm])
end
已修改的工作路线:
put '/change_password/:id' do
change_password(params[:id], params[:password], params[:confirm])
end