1
Error Message PictureOmniauthが動作していません:未定義のメソッド `persisted? 'なしの場合:NilClass
私は基本的に以下のリンクからの指示に正確に従いました。私はこの間違いのエラーを受け取りますか?私は何をすべきか分かりません。何らかの永続メソッドを作成する必要がありますか?このようないくつかの他の質問があり、それらのすべてを読んだ後、彼らはALLでは役に立たなかった。助けてください。
https://github.com/zquestz/omniauth-google-oauth2
Omniauthsコントローラ
class OmniauthCallbacksController < Devise::OmniauthCallbacksController
def google_oauth2
# You need to implement the method below in your model (e.g. app/models/user.rb)
@user = User.from_omniauth(request.env["omniauth.auth"])
if @user.persisted?
flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => "Google"
sign_in_and_redirect @user, :event => :authentication
else
session["devise.google_data"] = request.env["omniauth.auth"].except(:extra) #Removing extra as it can overflow some session stores
redirect_to new_user_registration_url, alert: @user.errors.full_messages.join("\n")
end
end
end
Userモデルコードスニペット
def self.from_omniauth(access_token)
data = access_token.info
user = User.where(:email => data["email"]).first
# Uncomment the section below if you want users to be created if they don't exist
# unless user
# user = User.create(name: data["name"],
# email: data["email"],
# password: Devise.friendly_token[0,20]
# )
# end
user
end