質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

2056閲覧

undefined method `name' for nil:NilClassの原因と解決策

takann

総合スコア3

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2021/05/24 11:55

編集2021/05/24 20:40

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

validationかなぁ。。。nameが残ってそのタイミングで悪さしているとすると
user.rbを載せてください

投稿2021/05/24 14:23

winterboum

総合スコア23416

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takann

2021/05/24 20:45 編集

user.rbを追記しました。 validationをname⇨first_name last_nameに変更したところエラー解消しました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問