Publifyでユーザー登録するとCan't be blankエラーの対応

Ruby5でPublify(2017/08/06時点でGitHubからDL)構築してユーザー登録したら、「email can't be blank」(E-mailアドレスが空白だから登録できない)と言われる。原因はGemのDevise側の設定(?)の問題のようだ。

■ログを見ると、

Parameters: {"utf8"=>"✓", "authenticity_token"=>"3yQzraJPxAEJpMt3OnBeorf3tTByIIinlMo3QVaIQc0Azyp1BCQcGok+V1/RolwXdKjVR0z4hRhuIyg+qg032w==", "user"=>{"login"=>"username", "email"=>"username@gmail.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Sign up"}
Unpermitted parameter: email

と出力され、E-mailはちゃんと入力されている。「Unpermitted parameter: email」という出力があるので、これが原因っぽい。

■Stack Overflowで調べると、Deviseの「strong parameters」を参照せよ、とのことで、
ruby on rails - Devise error: email can't be blank - Stack Overflow

■DeviseのGitHubの同項目の書き方を参照する。
https://github.com/plataformatec/devise#strong-parameters

【書き方】

class ApplicationController < ActionController::Base
  before_action :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:username])
  end
end

■(結論)Publifyの app/controllers/application_controller.rbを以下のように変更した。

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception

  before_action :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    added_attrs = [:username, :email, :password, :password_confirmation, :remember_me]
    devise_parameter_sanitizer.permit :sign_up, keys: added_attrs
    devise_parameter_sanitizer.permit :account_update, keys: added_attrs
  end
end

再度、ユーザー登録をしたら無事に通った。