【プログラミング】 (Ruby on Rails)NoMethodError: undefined method `admin?’ for nil:NilClassの修正方法

Ruby on Railsチュートリアル第10章まで学習が進みました。

この章の最後に統合テスト用のコードを記述して実行した際に、以下のエラーが発生しました。

 

【エラー名称】

NoMethodError: undefined method `admin?’ for nil:NilClass

 

【改善方法】

※単なる記述漏れ

アプリ名/app/controller/users_controller.rb内のコードに記述漏れがあったため、エラー発生したことを確認。

class UsersController < ApplicationController
  before_action :logged_in_user, only: [:index, :edit, :update, :destroy]
  before_action :correct_user,   only: [:edit, :update]
  before_action :admin_user,     only: :destroy

  def index
    @users = User.paginate(page: params[:page])
  end

before_action :logged_in_user, only: [:index, :edit, :update, :destroy]

 

上の:destroyが記述されていないせいで、統合テスト実行時にエラーを発生させてしまうため、コーディングは漏れがないように注意する必要があります。

※以下は、:destroyの記述漏れによる統合テスト実行時のエラー内容

.F

Failure:
UsersIndexTest#test_index_as_admin_including_pagination_and_delete_links [/Users/●●(ユーザー名)/Documents/Ruby_Files/sample01/sample_app_ver2/test/integration/users_index_test.rb:20]:
"User.count" didn't change by -1.
Expected: 33
  Actual: 34

 

 

この記事も人気ですよ