前提・実現したいこと
現在、railsでdeviseを使用してtwitterAPIの連携をはかっています。
成したいこととしましては、twitterログイン認証させるために参考記事を使用して実装していく中で下記のエラーに遭遇し、解決策がわからない状況でございます。
参考記事:https://qiita.com/cigalecigales/items/73d7bd7ec59a001ccd74#twitter%E3%81%A7%E8%AA%8D%E8%A8%BC%E3%81%99%E3%82%8B
発生している問題・エラーメッセージ
wrong number of arguments (given 2, expected 0..1)
該当のソースコード
ruby
1[omniauth_callbacks_controller.rb] 2 3class OmniauthCallbacksController < Devise::OmniauthCallbacksController 4 def twitter 5 @user = User.from_omniauth(request.env["omniauth.auth"].except("extra")) 6 7 if @user.persisted? 8 flash.notice = "ログインしました!" 9 sign_in_and_redirect @user 10 else 11 session["devise.user_attributes"] = @user.attributes 12 redirect_to new_user_registration_url 13 end 14 end 15end
ruby
1[user.rb] 2 3class User < ApplicationRecord 4 # Include default devise modules. Others available are: 5 # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable 6 devise :database_authenticatable, :registerable, 7 :recoverable, :rememberable, :trackable, :validatable, 8 :confirmable, :lockable, :timeoutable, :omniauthable, omniauth_providers: [:twitter] 9 10 has_one :profile, dependent: :destroy 11 12 def self.from_omniauth(auth) 13 where(provider: auth["provider"], uid: auth["uid"]).first_or_create do |user| 14 user.provider = auth["provider"] 15 user.uid = auth["uid"] 16 user.username = auth["info"]["nickname"] 17 end 18 end 19 20 def self.new_with_session(params, session) 21 if session["devise.user_attributes"] 22 new(session["devise.user_attributes"], without_protection: true) do |user| 23 user.attributes = params 24 user.valid? 25 end 26 else 27 super 28 end 29 end 30end 31
試したこと
エラー文としては「引数が現状2個あるけど本当は0~1個で良いんだけど。。」と言われているように読み取れるのですが、具体的な手立てのレパートリーや発想が乏しく、難儀しています。
試しにwithout_protection: trueを外してみるとサインアップへ遷移されますが、今後の挙動で何か不具合がある様な気がして気が気でありません。。
ruby
1def self.new_with_session(params, session) 2 if session["devise.user_attributes"] 3 new(session["devise.user_attributes"]) do |user| 4 user.attributes = params 5 user.valid? 6 end 7 else 8 super 9 end 10 end
大変申し訳ありませんが、解決に向けてヒントや解決案をいただけますと幸いでございます。
何卒、よろしくお願い致します。
補足情報(FW/ツールのバージョンなど)
rails 5.1.6
sqlite3
cloud9
あなたの回答
tips
プレビュー