2015-03-31 6 views
0

Я использую Twitter Gem от sferik и Devise Gem от plataformatec.Rails Twitter config global

Если я понимаю, а процесс, вот как я это делаю: Когда пользователь, войдите в систему со своим твиттере, я храню его маркер и 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

Решение довольно просто на самом деле ...

Просто добавил before_action в моем ApplicationController и проверить, если пользователь вошел в систему или нет.

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 
Смежные вопросы