OmniAuthとDevise連携での未定義メソッドエラー(メモ)


開発環境

Ruby 2.7.4
Rails 6.1.4.1
PostgreSQL 13.4

エラー内容

OmniAuthとDeviseを連携し起動の際に`omniauth_authorize_path'が未定義メソッドとされる

参考

OmniAuth + Devise 連携で ActionView::Template::Error (undefined method `omniauth_authorize_path’ for x

原因

OmniAuthのメソッド変更にDeviseのテンプレートが追い付いていない
以前はomniauth_authorize_path()だったのが、admin_twitter_omniauth_authorize_path()user_facebook_omniauth_authorize_path()のように呼び出すように変更された

解決方法

エラー箇所を以下のように変更する

<%= link_to "Sign in with #{OmniAuth::Utils.camelize(provider)}", public_send("#{resource_class.name.downcase}_#{provider.to_s}_omniauth_authorize_path") %>

以上