【发布时间】:2018-06-19 22:25:16
【问题描述】:
我在我的用户类中使用带有 has_secure_password 的 Bcrypt,并尝试使用用户名和密码创建一个新用户,但密码参数虽然在我的强参数中允许,但没有通过。
这是我的用户类:
class User < ApplicationRecord
has_secure_password
has_many :journals
end
这是用户控制器:
class Api::V1::UsersController < ActionController::API
def index
@users = User.all
render json: @users.to_json(:include => :journals)
end
def create
byebug
@user = User.create(user_params)
end
private
def user_params
params.require(:user).permit(:username, :password)
end
end
我正在尝试发布一个新用户:
fetch('http://localhost:3001/api/v1/users', {
method: 'POST',
headers: {Accept: 'application/json', "Content-Type":
'application/json'},
body: JSON.stringify({username: 'Name', password: 'test'})})
结果,在'create'中的 byebug 中,是:
(byebug) params
<ActionController::Parameters {"username"=>"Name", "password"=>"test",
"controller"=>"api/v1/users", "action"=>"create", "user"=> .
{"username"=>"Name"}} permitted: false>
(byebug) user_params
<ActionController::Parameters {"username"=>"Name"} permitted: true>
无论我尝试什么,我都无法访问 user_params 中的密码参数来创建具有哈希密码的用户。
在终端中,在 rails 控制台中,我可以创建一个用户,并且密码按预期进行哈希处理,然后我可以使用正常的获取请求从 API 获取该用户信息,但我不能使用强参数来创建一个用户一个 Post 请求,我不知道为什么。
【问题讨论】:
标签: ruby-on-rails