如何更改current_user twitter oauth以运行后台作业

时间:2017-04-30 09:08:53

标签: ruby api twitter oauth rubygems

我有这个后台工作,每天通过resque-scheduler运行一次

@user = User.all
    @user.each do |u|
        current_user = u.id #this does not doe the job
        twt = Tweet.where(user_id: u.uid).where(status_id: 0).order(:created_at, :id).first
        if twt
        twt.status_id = 1
        twt.save
        $client.update(twt.text)
    end

目前,此代码会将所有推文更新$client.update(twt.text)发送给首次登录的用户。我想要它做的是将twitter oauths当前用户设置为@user.each do |u|每个循环中当前选定的用户,并将推文发布到其特定帐户。如何在用户未主动登录时更改current_user属性?

更新

current_user由user.rb中的这些方法确定

 def self.from_omniauth(auth)
    where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
      user.provider = auth.provider
      user.uid = auth.uid
      user.name = auth.info.name
      user.oauth_token = auth.credentials.token
      user.oauth_secret = auth.credentials.secret
      user.save!
    end
  end

然后在sessions_controller中设置current_user

class SessionsController < ApplicationController
    def create
        user = User.from_omniauth(env["omniauth.auth"])
        session[:user_id] = user.id
        if Subscription.where(user_id: current_user.uid).present? 
            redirect_to root_path
        else
            redirect_to new_subscription_path
        end

    end

    def destroy
        session[:user_id] = nil
        redirect_to root_path
    end

    def session_params
        params.require(:user_id).permit!
    end
end

0 个答案:

没有答案