2015-03-31 64 views
0

我正在使用sferik的Twitter Gem和plataformatec的Devise GemRails Twitter config global

如果我没有理解好这个过程中,这里是我如何做到这一点:当用户用他的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 

所以每用户对于@client有不同的config.access_token(_secret)

我的问题是什么是使每个控制器全球范围内可用的Twitter客户端的最佳方式,但只有当用户登录

我不能把它放在config/initializers因为config.access_token(_secret)尚未设置...

感谢您的澄清。

回答

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