Devise 4.2.0で Undefined method `for' for #<Devise on line devise_parameter_sanitizer.for エラー

# 概要

以下リンク先を写経中にエラーが出て対応したのでメモ。

- Deviseの設定手順をまとめてみた。 その4　ユーザーIDで、ログイン認証編 - Qiita  
http://qiita.com/itboze/items/385d3cd539fc7578b52a


Devise 4.1.0以降で、
`devise_parameter_sanitizer.for`
から
`devise_parameter_sanitizer.permit`
に変更されているためそのままだと以下の様なエラーが出る。

<img width="1053" alt="devise_error.png" src="https://qiita-image-store.s3.amazonaws.com/0/7902/adc74ce3-ea26-93c5-dd0f-10d5aed13c4e.png">


以下の通り修正すると動く。

```rb:application_controller.rb
class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception

  before_filter :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    # strong parametersを設定し、user_idを許可
    # devise_parameter_sanitizer.for(:sign_up){|u|
    #   u.permit(:user_id, :password, :password_confirmation)
    # }
    devise_parameter_sanitizer.permit(:sign_up){|u|
      u.permit(:user_id, :password, :password_confirmation)
    }

    # devise_parameter_sanitizer.for(:sign_in){|u|
    #   u.permit(:user_id, :password, :remember_me)
    # }
    devise_parameter_sanitizer.permit(:sign_in){|u|
      u.permit(:user_id, :password, :remember_me)
    }
  end
end
```

以下、実行環境です。


```ruby:Gemfile
source 'https://rubygems.org'


# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.7'
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.1.0'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby

# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.0'
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', '~> 0.4.0', group: :doc

# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'

# Use Unicorn as the app server
# gem 'unicorn'

# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development

gem 'devise'
gem 'devise-i18n'
gem 'devise-i18n-views'

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug'
end

group :development do
  # Access an IRB console on exception pages or by using <%= console %> in views
  gem 'web-console', '~> 2.0'

  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'
end
```

```yaml:Gemfile.lock
GEM
  remote: https://rubygems.org/
  specs:
    actionmailer (4.2.7)
      actionpack (= 4.2.7)
      actionview (= 4.2.7)
      activejob (= 4.2.7)
      mail (~> 2.5, >= 2.5.4)
      rails-dom-testing (~> 1.0, >= 1.0.5)
    actionpack (4.2.7)
      actionview (= 4.2.7)
      activesupport (= 4.2.7)
      rack (~> 1.6)
      rack-test (~> 0.6.2)
      rails-dom-testing (~> 1.0, >= 1.0.5)
      rails-html-sanitizer (~> 1.0, >= 1.0.2)
    actionview (4.2.7)
      activesupport (= 4.2.7)
      builder (~> 3.1)
      erubis (~> 2.7.0)
      rails-dom-testing (~> 1.0, >= 1.0.5)
      rails-html-sanitizer (~> 1.0, >= 1.0.2)
    activejob (4.2.7)
      activesupport (= 4.2.7)
      globalid (>= 0.3.0)
    activemodel (4.2.7)
      activesupport (= 4.2.7)
      builder (~> 3.1)
    activerecord (4.2.7)
      activemodel (= 4.2.7)
      activesupport (= 4.2.7)
      arel (~> 6.0)
    activesupport (4.2.7)
      i18n (~> 0.7)
      json (~> 1.7, >= 1.7.7)
      minitest (~> 5.1)
      thread_safe (~> 0.3, >= 0.3.4)
      tzinfo (~> 1.1)
    arel (6.0.3)
    bcrypt (3.1.11)
    binding_of_caller (0.7.2)
      debug_inspector (>= 0.0.1)
    builder (3.2.2)
    byebug (9.0.5)
    coffee-rails (4.1.1)
      coffee-script (>= 2.2.0)
      railties (>= 4.0.0, < 5.1.x)
    coffee-script (2.4.1)
      coffee-script-source
      execjs
    coffee-script-source (1.10.0)
    concurrent-ruby (1.0.2)
    debug_inspector (0.0.2)
    devise (4.2.0)
      bcrypt (~> 3.0)
      orm_adapter (~> 0.1)
      railties (>= 4.1.0, < 5.1)
      responders
      warden (~> 1.2.3)
    devise-i18n (1.1.0)
    devise-i18n-views (0.3.7)
    erubis (2.7.0)
    execjs (2.7.0)
    globalid (0.3.6)
      activesupport (>= 4.1.0)
    i18n (0.7.0)
    jbuilder (2.5.0)
      activesupport (>= 3.0.0, < 5.1)
      multi_json (~> 1.2)
    jquery-rails (4.1.1)
      rails-dom-testing (>= 1, < 3)
      railties (>= 4.2.0)
      thor (>= 0.14, < 2.0)
    json (1.8.3)
    loofah (2.0.3)
      nokogiri (>= 1.5.9)
    mail (2.6.4)
      mime-types (>= 1.16, < 4)
    mime-types (3.1)
      mime-types-data (~> 3.2015)
    mime-types-data (3.2016.0521)
    mini_portile2 (2.1.0)
    minitest (5.9.0)
    multi_json (1.12.1)
    nokogiri (1.6.8)
      mini_portile2 (~> 2.1.0)
      pkg-config (~> 1.1.7)
    orm_adapter (0.5.0)
    pkg-config (1.1.7)
    rack (1.6.4)
    rack-test (0.6.3)
      rack (>= 1.0)
    rails (4.2.7)
      actionmailer (= 4.2.7)
      actionpack (= 4.2.7)
      actionview (= 4.2.7)
      activejob (= 4.2.7)
      activemodel (= 4.2.7)
      activerecord (= 4.2.7)
      activesupport (= 4.2.7)
      bundler (>= 1.3.0, < 2.0)
      railties (= 4.2.7)
      sprockets-rails
    rails-deprecated_sanitizer (1.0.3)
      activesupport (>= 4.2.0.alpha)
    rails-dom-testing (1.0.7)
      activesupport (>= 4.2.0.beta, < 5.0)
      nokogiri (~> 1.6.0)
      rails-deprecated_sanitizer (>= 1.0.1)
    rails-html-sanitizer (1.0.3)
      loofah (~> 2.0)
    railties (4.2.7)
      actionpack (= 4.2.7)
      activesupport (= 4.2.7)
      rake (>= 0.8.7)
      thor (>= 0.18.1, < 2.0)
    rake (11.2.2)
    rdoc (4.2.2)
      json (~> 1.4)
    responders (2.2.0)
      railties (>= 4.2.0, < 5.1)
    sass (3.4.22)
    sass-rails (5.0.5)
      railties (>= 4.0.0, < 6)
      sass (~> 3.1)
      sprockets (>= 2.8, < 4.0)
      sprockets-rails (>= 2.0, < 4.0)
      tilt (>= 1.1, < 3)
    sdoc (0.4.1)
      json (~> 1.7, >= 1.7.7)
      rdoc (~> 4.0)
    spring (1.7.2)
    sprockets (3.6.3)
      concurrent-ruby (~> 1.0)
      rack (> 1, < 3)
    sprockets-rails (3.1.1)
      actionpack (>= 4.0)
      activesupport (>= 4.0)
      sprockets (>= 3.0.0)
    sqlite3 (1.3.11)
    thor (0.19.1)
    thread_safe (0.3.5)
    tilt (2.0.5)
    turbolinks (5.0.0)
      turbolinks-source (~> 5)
    turbolinks-source (5.0.0)
    tzinfo (1.2.2)
      thread_safe (~> 0.1)
    uglifier (3.0.0)
      execjs (>= 0.3.0, < 3)
    warden (1.2.6)
      rack (>= 1.0)
    web-console (2.3.0)
      activemodel (>= 4.0)
      binding_of_caller (>= 0.7.2)
      railties (>= 4.0)
      sprockets-rails (>= 2.0, < 4.0)

PLATFORMS
  ruby

DEPENDENCIES
  byebug
  coffee-rails (~> 4.1.0)
  devise
  devise-i18n
  devise-i18n-views
  jbuilder (~> 2.0)
  jquery-rails
  rails (= 4.2.7)
  sass-rails (~> 5.0)
  sdoc (~> 0.4.0)
  spring
  sqlite3
  turbolinks
  uglifier (>= 1.3.0)
  web-console (~> 2.0)

BUNDLED WITH
   1.12.5

```

# 参考リンク
- Rails 5, Undefined method `for' for #<Devise on line devise_parameter_sanitizer.for - Stack Overflow
http://stackoverflow.com/questions/37341967/rails-5-undefined-method-for-for-devise-on-line-devise-parameter-sanitizer

- Rails4からRails5にアップデートしたらDeviceでエラーが出た - Qiita
http://qiita.com/karunru/items/2d8e11556213d536f7df