Nicolás Videla
Nicolás Videla

Reputation: 44

Rails: User.Create through params failing

User Controller

When submitting this from my form, it simply returns to the signup to the return page, because of the .save always failing.

 def show
    @user = User.find(params[:id])
 end
 def new
     @user = User.new
 end

 def create
    @user = User.new user_params
    if @user.save
         redirect_to @user
    else
        render 'new'
    end
end

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

I tried this but I get ActiveModel::ForbiddenAttributesError

def create
@user = User.new(params[:user])
if @user.save
redirect_to @user
else
render 'new'
end
end

Schema.rb

 ActiveRecord::Schema.define(version: 20150215194936) do

  create_table "users", force: :cascade do |t|
    t.string   "name"
    t.string   "email"
    t.datetime "created_at",      null: false
    t.datetime "updated_at",      null: false
    t.string   "password_digest"
  end

  add_index "users", ["email"], name: "index_users_on_email", unique: true

end

Gemfile

source 'https://rubygems.org'

gem 'rails', '4.2.0'
gem 'bootstrap-sass'
gem 'bcrypt-ruby'
gem 'faker'
gem 'will_paginate'
gem 'bootstrap-will_paginate'
gem 'jquery-rails'
gem 'turbolinks'

group :development, :test do
  gem 'sqlite3'
  gem 'rspec-rails'
  gem 'guard-rspec'
  gem 'guard-spork'
  gem 'childprocess'
  gem 'spork', '0.9.2'
end

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails'
  gem 'coffee-rails'
  gem 'uglifier'
end

group :test do
  gem 'capybara'
  gem 'factory_girl_rails'
  gem 'cucumber-rails', :require => false
  gem 'database_cleaner'
  # gem 'launchy'
  # gem 'rb-fsevent', :require => false
  # gem 'growl'
end

group :production do
  gem 'pg'
end

Upvotes: 0

Views: 787

Answers (1)

Arup Rakshit
Arup Rakshit

Reputation: 118261

You should modify this line :

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

Your model has the field :name, but you were using :username.

Upvotes: 1

Related Questions