1

私は小さなプロジェクトに取り組んでいて、少し立ち往生しています。私は物事を動かすためにオンラインでいくつかのチュートリアルに従ってきましたが、ここに私が思いついたものがあります. Twitter で認証し、Twitter gem を使用して次のようなものを実行すると、すべてが機能します。

current_user.twitter.home_timeline(count:10)

ただし、Twitter には制限があるため、Omniauth で認証された「current_user」のツイートは、User_id でそのユーザーに関連付けられたデータベースに保存されることにしました。これが私がこれまでに得たものです。

コントローラ:

def pull
current_user.newtweets.pull_tweets
end

モデル (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

モデル(user.rb)

...
has_many :newtweets
...

ルート:

match 'refresh' => 'tweet#pull'

だから、私はこれが初めてですが、それが私がこれまでに構築したものです。上記のセットアップでエラーが発生します。「初期化されていない定数 User::Newtweet」

ここで、コントローラーに移動して、コントローラーの次の行を置き換えます。def pull current_user.newtweets.pull_tweets.limit(100) end

と;

def pull
Newtweets.pull_tweets
end

別のエラーが発生します。認証できませんでした

これに関するヘルプは素晴らしいでしょう。

4

1 に答える 1

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
于 2013-05-26T04:16:39.033 に答える