我使用的是来自sferik的Twitter Gem和来自plataformatec的Devise Gem。
如果我理解这个过程,我就是这样做的:当用户使用他的Twitter帐户登录时,我将他的令牌和token_secret存储在数据库中,以便我可以这样做:
@client = Twitter::REST::Client.new do |config|
config.consumer_key = "MY_KEY"
config.consumer_secret = "MY_SECRET"
config.access_token = current_user.token
config.access_token_secret = current_user.token_secret
end
因此,每个用户对config.access_token(_secret)
都有不同的@client
。
我的问题是,在每个控制器中全局使用Twitter客户端的最佳方法是什么?但仅在用户登录时?
我无法将其放入config/initializers
,因为config.access_token(_secret)
尚未设置...
感谢您的澄清。
答案 0 :(得分:0)
事实上解决方案非常简单......
刚刚在我的ApplicationController中添加了一个before_action,并检查用户是否已登录。
class ApplicationController < ActionController::Base
before_action :set_twitter_client
private
def set_twitter_client
if user_signed_in?
@client = Twitter::REST::Client.new do |config|
config.consumer_key = "MY_KEY"
config.consumer_secret = "MY_SECRET"
config.access_token = current_user.token
config.access_token_secret = current_user.token_secret
end
end
end
end