Ruby on rails 如何从注册表单获取要保存到数据库的用户信息?

Ruby on rails 如何从注册表单获取要保存到数据库的用户信息?,ruby-on-rails,authentication,Ruby On Rails,Authentication,我试图在rails 5中从头开始进行身份验证,但当输入注册表单时,我的用户信息没有被保存。我还收到了以下rails错误:ActiveModel::ForbiddenAttribute错误 @user=user.new(参数[:user]) class用户:create 验证是否存在:电子邮件 验证电子邮件的唯一性 def自我验证(电子邮件、密码) 用户=通过电子邮件查找(电子邮件) 如果user&&user.password\u hash==BCrypt::Engine.hash\u secre

我试图在rails 5中从头开始进行身份验证,但当输入注册表单时,我的用户信息没有被保存。我还收到了以下rails错误:ActiveModel::ForbiddenAttribute错误

@user=user.new(参数[:user])

class用户:create
验证是否存在:电子邮件
验证电子邮件的唯一性
def自我验证(电子邮件、密码)
用户=通过电子邮件查找(电子邮件)
如果user&&user.password\u hash==BCrypt::Engine.hash\u secret(密码,
用户密码(U salt)
使用者
其他的
无
终止
终止
def加密密码
如果密码存在?
self.password\u salt=BCrypt::Engine.generate\u salt
self.password\u hash=BCrypt::Engine.hash\u secret(密码,
密码(U盐)
终止
终止
终止
注册
表格无效



类UsersController“已注册!” 其他的 呈现“新” 终止 终止 终止 类Post
如果您从头开始创建,请确保每个控制器都有强大的参数声明,让我解释一下,在创建方法中,您将User.new(User\u params),User\u params是另一个方法,我们通常将其放在类的底部,我们将方法def User\u params,这是我们声明允许哪些字段/数据可以传递给我们的模型,因为您使用的是bcrypt gem,我认为该字段如下所示

大多数rails用户用于授权用户的附加信息

class UsersController < ApplicationController

  def create
    @user = User.new(user_params)
    # ...
  end

  private

  def user_params
    params.require(:user).permit(:username, :email, :password, :salt, :encrypted_password)
  end
end
class UsersController
非常感谢!我对rails是个新手,我一直在想,如果它能帮你解决问题,你能接受我的答案吗?在我的答案旁边勾选mark,这个问题被标记为Solved。这很有帮助,但我还需要删除attr_访问器。再次感谢:)是的,在rails>=4中,您声明了强参数,正如我在上面所写的,这将替换rails 3中通常使用的字段的attr_属性(read、write、accessor)
class UsersController < ApplicationController

  def create
    @user = User.new(user_params)
    # ...
  end

  private

  def user_params
    params.require(:user).permit(:username, :email, :password, :salt, :encrypted_password)
  end
end