2017-03-19 11 views
0

Railsでログインシステムを作成しようとしていますが、登録ページに行くと「#の未定義メソッド `first_name '」というエラーが表示されます。 "first_name"列のユーザーデータベースを調べて、 "users"テーブルの唯一の列が "id"、 "created_at"、および "updated_at"であることを確認しました。新しいappname -d mysqlを使ってアプリケーションを作成しました。mysql2 gemを持っていて、databases.ymlファイルを更新しました。「rake db:migrate」を実行しました。まだ、何も動作しません。これをどうすれば解決できますか?これは私のユーザーのコントローラである:ここでRailsマイグレーションファイルがMysqlデータベースに追加されていません

class UsersController < ApplicationController 
    def new 
    @user = User.new 
    end 
    def create 
    @user = User.new(user_params) 
    if @user.save 
    session[:user_id] = @user.id 
    redirect_to '/login' 
    else 
    redirect_to '/signup' 
    end 
end 
    private 
    def user_params 
    params.require(:user).permit(:first_name, :last_name, :email, :password) 
    end 
end 

は私のルータである:ここでは

Rails.application.routes.draw do 
    root 'main#index' 
    get '/login' => 'sessions#new' 
    get '/signup' => 'users#new' 
    resources :users 
    post 'login' => 'sessions#create' 
    # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html 
end 

は私のモデルである:ここでは

class User < ApplicationRecord 
     has_secure_password 
    end 

は私のマイグレーションファイルです:

class CreateUsers < ActiveRecord::Migration[5.0] 
    def change 
    create_table :users do |t| 
     t.string :first_name 
     t.string :last_name 
     t.string :email 
     t.string :password_digest 

     t.timestamps 
    end 
    end 
end 

ここに私の見解があります:

<div class="login"> 
    <div class="container"> 
    <div class="form"> 

    <h1>Sign up</h1> 

    <%= form_for(@user) do |f| %> 
     <%= f.text_field :first_name, :placeholder => "First name" %> 
     <%= f.text_field :last_name, :placeholder => "Last name" %> 
     <%= f.email_field :email, :placeholder => "Email" %> 
     <%= f.password_field :password, :placeholder => "Password" %> 
     <%= f.submit "Create an account", class: "btn-submit" %> 
    <% end %> 


    </div> 
    </div> 
</div> 

私はあなたがデシベルでの移行をやり直すしようとする場合がありますUbuntuの16.04で

+0

あなたが再移行しようとすることができ、最後の移行 –

+1

は、私はそれを試してみました、それが働きました。ありがとうございました! –

答えて

0

をRailsの5.0.2を使用しています:移行:やり直し、そのdoesntの作業は、各列を追加する新しい移行を作成した場合。 (デシベルをやり直す:移行)

class CreateUsers < ActiveRecord::Migration[5.0] 
    def change 
     add_column :products, :part_number, :string 
     add_column :products, :price, :decimal 
    end 
    end 
関連する問題