3

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

私は postgresql を使用していますが、これがバグなのか、それとも単純なものを見落としているのかわかりません。

ありがとう、

4

3 に答える 3

1

私はレール4でそれをやった:

「has_secure_password」を使用するには、パラメーターを使用する必要がありますpassword_digest

Schema Information = name :string, password_digest :string

class User < ActiveRecord::Base
     has_secure_password
     validates :name, presence: true, uniqueness: true
     validates_presence_of :password, :on => :create
end

そしてコントローラー

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

def create
    @user = User.new(user_params)
    respond_to do |format|
      if @user.save
        format.html { redirect_to users_url, notice: "User #{@user.name} was successfully created.'"}
        format.json { render action: 'show', status: :created, location: @user }
      else
        format.html { render action: 'new' }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end
end
于 2013-11-22T13:21:59.847 に答える