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
而不是
,除非。无?
如果。显示?因为它更具可读性。