前提・実現したいこと
以下のrailsチュートリアルのページネーション機能を進めております。
https://railstutorial.jp/chapters/updating_and_deleting_users?version=5.1#sec-pagination
サーバを起動して、ページネーションは機能したのですが
いざ、そのテストを書いて(リスト10.4.8)実行すると
さきほどは動作したpaginateメソッドの記述部分がundefinedと表示されました。
test環境時でも当該メソッドを使えるようにするにはどのあたりを確認するとよいでしょうか?
発生している問題・エラーメッセージ
Error: UsersIndexTest#test_index_including_pagination: NoMethodError: undefined method `paginate' for #<Class:0x00007ffd24ac4b20> app/controllers/users_controller.rb:6:in `index' test/integration/users_index_test.rb:11:in `block in <class:UsersIndexTest>'
該当のソースコード
テスト時にエラーになるコード
ruby
1class UsersController < ApplicationController 2 before_action :logged_in_user, only: [:index, :edit, :update] 3 before_action :correct_user, only: [:edit, :update] 4 5 def index 6 @users = User.paginate(page: params[:page]) 7 end
テストコード
ruby
1require 'test_helper' 2 3class UsersIndexTest < ActionDispatch::IntegrationTest 4 5 def setup 6 @user = users(:michael) 7 end 8 9 test "index including pagination" do 10 log_in_as(@user) 11 get users_path 12 assert_template 'users/index' 13 assert_select 'div.pagination' 14 User.paginate(page: 1).each do |user| 15 assert_select 'a[href=?]', user_path(user), text: user.name 16 end 17 end 18end
試したこと
- gemの削除とbundleの再インストール
- rails consoleでdevelopment/testのRAILS_ENVでpaginateが使えるか検証
$ rails console Running via Spring preloader in process 63328 Loading development environment (Rails 5.1.4) irb(main):001:0> User.paginate(page: 1, per_page:1) User Load (3.0ms) SELECT "users".* FROM "users" LIMIT ? OFFSET ? [["LIMIT", 1], ["OFFSET", 0]] (0.5ms) SELECT COUNT(*) FROM "users" ...(略) $ RAILS_ENV=test rails console Running via Spring preloader in process 63394 Loading test environment (Rails 5.1.4) irb(main):001:0> User.paginate(page: 1, per_page:1) NoMethodError: undefined method `paginate' for User (call 'User.connection' to establish a connection):Class from (irb):1
補足情報(FW/ツールのバージョンなど)
- ruby:ruby 2.4.2p198
- rails:5.1.4
Gemfile
ruby
1source 'https://rubygems.org' 2 3gem 'rails', '5.1.4' 4gem 'bcrypt', '3.1.11' 5gem 'faker', '1.7.3' 6gem 'will_paginate', '~> 3.0.4' 7gem 'bootstrap-will_paginate', '1.0.0' 8gem 'bootstrap-sass', '3.3.7' 9gem 'puma', '3.9.1' 10gem 'sass-rails', '5.0.6' 11gem 'uglifier', '3.2.0' 12gem 'coffee-rails', '4.2.2' 13gem 'jquery-rails', '4.3.1' 14gem 'turbolinks', '5.0.1' 15gem 'jbuilder', '2.7.0' 16 17group :development, :test do 18 gem 'sqlite3', '1.3.13' 19 gem 'byebug', '9.0.6', platform: :mri 20end 21 22group :development do 23 gem 'web-console', '3.5.1' 24 gem 'listen', '3.1.5' 25 gem 'spring', '2.0.2' 26 gem 'spring-watcher-listen', '2.0.1' 27end 28 29group :test do 30 gem 'rails-controller-testing', '1.0.2' 31 gem 'minitest-reporters', '1.1.14' 32 gem 'guard', '2.13.0' 33 gem 'guard-minitest', '2.4.4' 34end 35 36group :production do 37 gem 'pg', '0.20.0' 38end 39 40# Windows環境ではtzinfo-dataというgemを含める必要があります 41gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/06 14:46
2018/08/06 15:48 編集
2018/08/07 00:24
2018/08/07 03:22