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: :exceptionbefore_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
再度、ユーザー登録をしたら無事に通った。