2017-03-19 6 views
0

Ich versuche, ein Login-System in Rails zu erstellen, aber, wenn ich auf der Anmeldeseite gehe, bekomme ich eine Fehlermeldung: "undefined Methode` first_name 'für # ". Ich habe meine Benutzerdatenbank nach der Spalte "first_name" überprüft und festgestellt, dass die einzigen Spalten in der Tabelle "users" "id", "created_at" und "updated_at" waren. Ich habe meine App mit Rails neu erstellt. Appname -d mysql, ich habe das mysql2-Juwel, ich habe meine databases.yml-Datei aktualisiert, und ich habe "rake db: migrate" ausgeführt. Trotzdem funktioniert nichts. Wie kann ich das beheben? Das ist mein Benutzer-Controller:Rails Migration Datei nicht hinzufügen Spalten Mysql-Datenbank

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 

Hier ist mein Router:

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 

Hier mein Modell ist:

class User < ApplicationRecord 
     has_secure_password 
    end 

Hier ist meine Migration-Datei:

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 

Hier ist meine Ansicht:

<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> 

Ich bin mit Rails 5.0.2 auf Ubuntu 16.04

+0

können Sie versuchen, die letzte Migration remigrieren (db: migrate: Redo) –

+1

Ich habe versucht, und es hat funktioniert. Vielen Dank! –

Antwort

0

Sie könnten versuchen wollen, die Migration mit db zu wiederholen: Migration: Redo, wenn das nicht funktioniert, eine neue Migration erstellen, um die jeweiligen Spalten hinzufügen .

class CreateUsers < ActiveRecord::Migration[5.0] 
    def change 
     add_column :products, :part_number, :string 
     add_column :products, :price, :decimal 
    end 
    end 
Verwandte Themen