ActiveRecord:列 'nivelAcceso' 不能为空
ActiveRecord: Column 'nivelAcceso' cannot be null
我需要向我当前正在构建的应用程序添加 'Change password' 功能,但是当我尝试更改用户密码时,出现以下错误:
列'nivelAcceso'不能为空;虽然用户的密码和 'nivelAcceso'(用户在应用程序中的访问权限)在同一个 table (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
ActiveRecord 表示该列不能为空。这通常是由于以这种方式配置的数据库。
如果您使用 ActiveRecord 迁移配置了数据库,请查找如下内容:
create_table(:cars) do |t|
# other commands
t.string :foo, null: false
end
您可以通过编写 运行 新迁移来更改此设置:
change_column :table_name, :foo_column, :string, null: true
原来修改密码的路径和编辑用户的路径完全一样
原来的,非工作路线:
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
我需要向我当前正在构建的应用程序添加 'Change password' 功能,但是当我尝试更改用户密码时,出现以下错误:
列'nivelAcceso'不能为空;虽然用户的密码和 'nivelAcceso'(用户在应用程序中的访问权限)在同一个 table (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
ActiveRecord 表示该列不能为空。这通常是由于以这种方式配置的数据库。
如果您使用 ActiveRecord 迁移配置了数据库,请查找如下内容:
create_table(:cars) do |t|
# other commands
t.string :foo, null: false
end
您可以通过编写 运行 新迁移来更改此设置:
change_column :table_name, :foo_column, :string, null: true
原来修改密码的路径和编辑用户的路径完全一样
原来的,非工作路线:
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