Ruby on rails 将用户控制器逻辑移动到模型中
我正在使用一个名为stripe_connect的gem,它是一个用于stripe的Oauth2解决方案。现在,这段代码运行良好,当涉及到Ruby on rails 将用户控制器逻辑移动到模型中,ruby-on-rails,Ruby On Rails,我正在使用一个名为stripe_connect的gem,它是一个用于stripe的Oauth2解决方案。现在,这段代码运行良好,当涉及到 request.env['omniauth.auth'] 但除此之外,我认为它看起来还不错。但是,我确实希望将其从控制器中移出并放入模型中。然而,我并不完全确定如何进行转换。有人能帮忙吗 class OmniauthCallbacksController < Devise::OmniauthCallbacksController before_ac
request.env['omniauth.auth']
但除此之外,我认为它看起来还不错。但是,我确实希望将其从控制器中移出并放入模型中。然而,我并不完全确定如何进行转换。有人能帮忙吗
class OmniauthCallbacksController < Devise::OmniauthCallbacksController
before_action :authenticate_user!
def stripe_connect
@user = current_user
if @user.update_attributes(
provider: request.env['omniauth.auth'].provider,
uid: request.env['omniauth.auth'].uid,
access_code: request.env['omniauth.auth'].credentials.token,
publishable_key: request.env['omniauth.auth'].info.stripe_publishable_key
)
redirect_to rooms_path
set_flash_message(:notice, :success, kind: 'Stripe') if is_navigational_format?
else
session['devise.stripe_connect_data'] = request.env['omniauth.auth']
redirect_to new_user_registration_url
end
end
end
class OmniAuthCallbackController
您可以将代码的更新属性部分移动到模型,以使控制器代码看起来干净易读:
控制器
将其命名为@user.update\u oauth\u details(请求)
(或任何其他名称)
型号(用户)
def update_oauth_details(request)
self.update_attributes(
provider: request.env['omniauth.auth'].provider,
uid: request.env['omniauth.auth'].uid,
access_code: request.env['omniauth.auth'].credentials.token,
publishable_key: request.env['omniauth.auth'].info.stripe_publishable_key
)
end