Password can't be blank, Bcrypt
bcrypt, ruby-on-rails
Solution
If you're using Rails 3.x you need to add `attr_accessible :password` or that parameter will be disallowed. On Rails 4, see strong parameters. The password param is probably being filtered out. Others (like username) probably as well.
Problem
After installing Bcrypt on my Rails app, there is a validation problem :password=>"Can't be blank", even though form is filled out: This is my User model ``` class User < ActiveRecord::Base before_save { self.email = email.downcase } validates :username, presence: true, length: { maximum: 50 } VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i validates :email, presence: true, format: { with: VALID_EMAIL_REGEX }, uniqueness: { case_sensitive: false } has_secure_password validates :password, length: { minimum: 6 } end ``` I've tried in the rails c and now the digest appears: User.create: ``` User.create(username: "Riprova", email:"testato@gmail.com", password: "nonfunzia", password_confirmation:"nonfunzia") <User id: 15, username: "Riprova", name: nil, surname: nil, email: "testato@gmail.com", gender: nil, birth: nil, created_at: "2013-08-11 15:35:03", updated_at: "2013-08-11 15:35:03", password_digest: "$2a$10$Q/5qtZYDXRcFsUWgve3JL.wui4hSHLhGgsuO0C6TTkBY..."> ``` User controller: ``` class UsersController < ApplicationController before_action :set_user, only: [:show, :edit, :update, :destroy] # GET /users # GET /users.json def index @users = User.all end # GET /users/1 # GET /users/1.json def show end # GET /users/new def new @user = User.new end # GET /users/1/edit def edit end # POST /users # POST /users.json def create @user = User.new(user_params) respond_to do |format| if @user.save format.html { redirect_to @user, notice: 'User 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 # PATCH/PUT /users/1 # PATCH/PUT /users/1.json def update respond_to do |format| if @user.update(user_params) format.html { redirect_to @user, notice: 'User was successfully updated.' } format.json { head :no_content } else format.html { render action: 'edit' } format.json { render json: @user.errors, status: :unprocessable_entity } end end end # DELETE /users/1 # DELETE /users/1.json def destroy @user.destroy respond_to do |format| format.html { redirect_to users_url } format.json { head :no_content } end end private # Use callbacks to share common setup or constraints between actions. def set_user @user = User.find(params[:id]) end # Never trust parameters from the scary internet, only allow the white list through. def user_params params.require(:user).permit(:username, :name, :surname, :email, :bids_left, :bids_left_free, :gender, :birth) end end ```