Ruby on rails Rails,Omniauth:NoMethodError-未定义的方法`持久化?';

Ruby on rails Rails,Omniauth:NoMethodError-未定义的方法`持久化?';,ruby-on-rails,ruby,omniauth,ruby-on-rails-5,stripe-connect,Ruby On Rails,Ruby,Omniauth,Ruby On Rails 5,Stripe Connect,我使用的是omniauth stripe connectgem,在验证用户时出现以下错误: 用户中的NoMethodError::OmniAuthCallbackController#条带(U connect) nil:NilClass的未定义方法“持久化” 我的回调控制器操作: def stripe_connect @user = UserProvider.find_for_stripe_oauth(request.env["omniauth.auth"]) if @user.

我使用的是
omniauth stripe connect
gem,在验证用户时出现以下错误:

用户中的NoMethodError::OmniAuthCallbackController#条带(U connect) nil:NilClass的未定义方法“持久化”

我的回调控制器操作:

def stripe_connect
    @user = UserProvider.find_for_stripe_oauth(request.env["omniauth.auth"])
    if @user.persisted? # here is the issue !!!
        sign_in @user, :event => :authentication
        redirect_to root_path
    end
end
和我的用户方法:

def self.find_for_stripe_oauth(auth)
    user = UserProvider.where(:provider => auth.provider, :uid => auth.uid).first
    unless user.nil?
        user.user
    else
        registered_user = User.where(:email => auth.info.email).first
        unless registered_user.nil?
            user_provider = UserProvider.new
            user_provider.provider = auth.provider
            user_provider.uid = auth.uid
            user_provider.user_id = registered_user.id
            user_provider.save!

            registered_user.stripe_access_code = auth.credentials.token
            registered_user.stripe_publishable_key = auth.info.stripe_publishable_key
            registered_user.stripe_id = auth.extra.raw_info.stripe_user_id
            registered_user.skip_confirmation!
            registered_user.save!

            registered_user
        end
    end
end

我做错了什么?

find\u for\u stripe\u oauth
如果注册用户不存在,则返回
nil
。在这种情况下,
除非注册用户.nil?
返回
false
,并且不执行内部块

移出注册用户,如下所示:

    registered_user = User.where(:email => auth.info.email).first
    unless registered_user.nil?
        user_provider = UserProvider.new
        user_provider.provider = auth.provider
        user_provider.uid = auth.uid
        user_provider.user_id = registered_user.id
        user_provider.save!

        registered_user.stripe_access_code = auth.credentials.token
        registered_user.stripe_publishable_key = auth.info.stripe_publishable_key
        registered_user.stripe_id = auth.extra.raw_info.stripe_user_id
        registered_user.skip_confirmation!
        registered_user.save!
    end

    registered_user

而不是
,除非。无?
如果。显示?因为它更具可读性。