Rails Twitter配置全局

时间:2015-03-31 18:10:12

标签: ruby-on-rails twitter devise global-variables

我使用的是来自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)尚未设置...

感谢您的澄清。

1 个答案:

答案 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