Dan
Dan

Reputation: 179

rake aborted! NameError: uninitialized constant Users

I seem to have run into a problem with my database. I have been using Rails to create a website and I have a database for Users. There was a change I needed to make so I rake db:drop and now I see this error:

database issue

Here is my users controller:

class UsersController < ApplicationController
  def new
    @user = User.new
  end

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

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

  private
  def user_params
    params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation, :phone_number, :address_one, :address_two, :city, :country, :state, :zip)
    end
end

my user model:

class User < ActiveRecord::Base
  has_secure_password
  validates :email, presence: true

  def self.from_omniauth(auth)
    where(provider: auth.provider, uid: auth.id).first_or_create do |user|
      user.provider = auth.provider
      user.uid = auth.uid
      user.name = auth.info.name
      user.oauth_token = auth.credentials.token
      user.oauth_expires_at = Time.at(auth.credentials.expires_at)
      user.password = "a"
      user.email = user.uid
      user.save!
    end
  end
end

and my current users database table

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :first_name
      t.string :last_name
      t.string :email
      t.string :password_digest
      t.string :phone_number
      t.string :address_one
      t.string :address_two
      t.string :city
      t.string :country
      t.string :state
      t.string :zip
    end
  end
end

Thanks for the any advice or help given!

Upvotes: 4

Views: 8687

Answers (1)

The migration filename and class name should be same. The two need to be consistent for rails to dynamically load the appropriate class.

class CreateUsers < ActiveRecord::Migration change it to class Users < ActiveRecord::Migration

Run rake db:migrate

Upvotes: 4

Related Questions