Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 Rails 4具有\u安全\u密码_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 4 Rails 4具有\u安全\u密码

Ruby on rails 4 Rails 4具有\u安全\u密码,ruby-on-rails-4,Ruby On Rails 4,在Rails 4应用程序中——当我试图在控制台中创建一个简单的用户时,我遇到了这个错误 RuntimeError: Password digest missing on new record 我的模型、控制器和架构如下所示: class User < ActiveRecord::Base # User.rb has_secure_password end class UsersController < ApplicationController def new

在Rails 4应用程序中——当我试图在控制台中创建一个简单的用户时,我遇到了这个错误

RuntimeError:
   Password digest missing on new record
我的模型、控制器和架构如下所示:

class User < ActiveRecord::Base # User.rb
  has_secure_password
end

class UsersController < ApplicationController 

  def new
    @user = User.new
  end

 def create
   @user = User.new(user_params)
     if @user.save
       redirect_to root_path, notice: "Thank you for signing up!"
     else
      render "new"
    end
  end

private

  def user_params
    params.require(:user).permit(:email, :name, :password, :password_confirmation)
  end
end

create_table "users", force: true do |t| #db/schema.rb (edited for brevity)
  t.string   "email"
  t.string   "name"
  t.text     "password_digest"
  t.datetime "created_at"
  t.datetime "updated_at"
end
class User
我正在使用postgresql,不确定这是否是一个bug,或者我是否遗漏了一些简单的东西


谢谢,

在Rails 4中,默认情况下所有属性都是mass赋值的,因此您不需要使用attr\u accessible。现在你必须说明你想要保护哪些。你会这样写吗

attr_protected :admin
当密码摘要为空时,将引发您收到的错误。它可能与您的属性帐户有关:。我可以看到您的视图吗?

我在rails 4中看到了:

要使用“has\u secure\u password”,必须使用参数
password\u digest

Schema Information=name:string,password\u digest:string
类用户:create
结束
和控制器
def用户参数
参数require(:user).permit(:name,:password_digest,
:密码,:密码(确认)
结束
def创建
@user=user.new(用户参数)
回应待办事项|格式|
如果@user.save
format.html{redirect_to users_url,注意:“User#{@User.name}已成功创建。“”
format.json{呈现操作:“显示”,状态::已创建,位置:@user}
其他的
format.html{呈现操作:'new'}
format.json{render json:@user.errors,status::unprocessable_entity}
结束
结束
结束

我遇到了完全相同的问题,但这部分解决了我的问题。无法存储密码确认,因为它不是许可证参数

def用户参数
参数require(:user).permit(:name,:password\u digest,:password,:password\u confirmation)

结束

您安装了bcrypt gem吗?没有bcrypthanks它不会走那么远,它与
attr\u访问器
有关。一旦我把它取下来,一切都很好。