将当前用户/授权用户的推文保存到数据库中

时间:2013-05-25 01:01:53

标签: ruby-on-rails ruby-on-rails-3 twitter twitter-oauth

我正在做一个小项目而且我有点卡住了。我已经在线阅读了一些教程,以便让事情发生变化,这就是我想出的。当使用Twitter进行身份验证并使用Twitter gem来运行类似的东西时,一切都有效。

current_user.twitter.home_timeline(count:10)

然而,由于Twitter有限制,我决定使用Omniauth进行身份验证的“current_user”,他/她的推文将被保存到User_id与该用户相关的数据库中。这是我到目前为止所得到的;

控制器:

def pull
current_user.newtweets.pull_tweets
end

MODEL(tweets.rb)

class Newtweets < ActiveRecord::Base
attr_accessible :content, :followers, :retweets, :screen_name, :time_date, :tweet_id,
:user_id

belongs_to :user

def self.pull_tweets
Twitter.home_timeline(since_id: maximum(:tweet_id)).each do |tweet|
unless exists?(tweet_id: tweet.id)
    create!(
            tweet_id: tweet.id,
            followers: tweet.user.followers_count,
            retweets: tweet.retweet_count,
            time_date: tweet.created_at,
            content: tweet.text,
            screen_name: tweet.user.screen_name,
    )
end
end
end

MODEL(user.rb)

...
has_many :newtweets
...

ROUTE:

match 'refresh' => 'tweet#pull'

所以,我是新手,但这就是我迄今为止构建的内容。我在上面的设置中遇到错误; “未初始化的常量User :: Newtweet”

现在,如果我转到Controller并更换Controller中的以下行;     def pull     current_user.newtweets.pull_tweets.limit(100)     端

用;

def pull
Newtweets.pull_tweets
end

我得到另一个错误;无法验证您的身份

对此的任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

我想通了,或者我认为,但我确信它不是最干净的方法,但它适用于我需要的东西。这是;

def self.pull
    tweets = User.current.twitter.home_timeline(since_id: maximum(:tweet_id))
    tweets.each do |tweet|
        unless exists?(tweet_id: tweet.id)
        Newtweets.create({tweet_id: tweet.id, followers: tweet.user.followers_count, retweets: tweet.retweet_count, time_date: tweet.created_at, content: tweet.text, screen_name: tweet.user.screen_name, user_id: User.current })
        end
   end
end