前提・実現したいこと
NoMethodError in UsersController#create
undefined method `name' for #User:0x00007fcd02e976a0
のエラーが出ていて、詰まっています。ご教示お願い致します。
first_name と last_nameを追加し、migrationファイルを作成、データベースに変更を加えた直後
上記のエラーが出てしまいました。
発生している問題・エラーメッセージ
エラーメッセージ
usercontrollerrb
1class UsersController < ApplicationController 2 def new 3 @user = User.new 4 end 5 6 def show 7 @user = User.find(params[:id]) 8 end 9 10 def create 11 @user = User.new(user_params) 12 13 if @user.save 14 log_in @user 15 flash[:success] = "Signup success!" 16 redirect_to @user 17 else 18 render :new 19 end 20 end 21 22 private 23 24 def user_params 25 params.require(:user).permit(:first_name,:last_name, :email, :password, 26 :password_confirmation) 27 end 28end
newhtmlerb
1<% provide(:title, 'Sign up') %> 2<h1>Sign up</h1> 3 4<div class="row"> 5 <div class="col-md-6 col-md-offset-3"> 6 7 <%= form_with(model: @user, local: true) do |f| %> 8 <%= render 'shared/error_messages' %> 9 10 <%= f.label :first_name %> 11 <%= f.text_field :first_name, class: 'form-control' %> 12 <%= f.label :last_name %> 13 <%= f.text_field :last_name, class: 'form-control' %> 14 15 <%= f.label :email %> 16 <%= f.email_field :email, class: 'form-control' %> 17 18 <%= f.label :password %> 19 <%= f.password_field :password, class: 'form-control' %> 20 21 <%= f.label :password_confirmation, "Confirmation" %> 22 <%= f.password_field :password_confirmation, class: 'form-control' %> 23 24 <%= f.submit "Create my account", class: "btn btn-primary" %> 25 <% end %> 26 </div> 27</div> 28
schemarb
1ActiveRecord::Schema.define(version: 2021_05_23_022437) do 2 3 create_table "users", force: :cascade do |t| 4 t.string "first_name" 5 t.string "email" 6 t.datetime "created_at", precision: 6, null: false 7 t.datetime "updated_at", precision: 6, null: false 8 t.string "password_digest" 9 t.string "last_name" 10 end 11 12end
class AddFirstNameToUsers < ActiveRecord::Migration[6.0] def change rename_column :users, :name, :first_name end end
class AddLastNameToUsers < ActiveRecord::Migration[6.0] def change add_column :users, :last_name, :string end end
userrb
1class User < ApplicationRecord 2 before_save { self.email = email.downcase } 3 4 VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+.[a-z]+\z/i 5 validates :name, presence: true, length: { maximum: 50 } 6 validates :email, presence: true, length: { maximum: 255 }, 7 format: { with: VALID_EMAIL_REGEX }, 8 uniqueness: true 9 validates :password, presence: true, length: { minimum: 6 } 10 has_secure_password 11 12 # Returns the hash digest of the given string. 13 def User.digest(string) 14 cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST : 15 BCrypt::Engine.cost 16 BCrypt::Password.create(string, cost: cost) 17 end 18end 19
補足情報(FW/ツールのバージョンなど)
rails2.6.6
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/24 20:45 編集