我想找到followed_users
用户模型
class User < ActiveRecord::Base
has_many :tweets, dependent: :destroy
has_many :relationships, foreign_key: "follower_id", dependent: :destroy
has_many :followed_users, through: :relationships, source: :followed
has_many :reverse_relationships, foreign_key: "followed_id", class_name: "Relationship", dependent: :destroy
has_many :followers, through: :reverse_relationships, source: :follower
推特模型
class Tweet < ActiveRecord::Base
belongs_to :user
关系模型
class Relationship < ActiveRecord::Base
belongs_to :follower, class_name: "User"
belongs_to :followed, class_name: "User
请帮我找
followed_users
:created_at
编辑:
我不想要Twitter的实际推文。我想要我的应用推文。
答案 0 :(得分:1)
首先,您需要了解如何将rails应用程序与Twitter集成。为此,您必须使用Twitter API。
要将rails应用程序与Twitter集成,请阅读此博客 发布 - http://www.manaslutech.com/blogs/3-Ruby-on-Rails-integration-with-Facebook-and-Twitter 。您可以跳过Facebook部分,只关注Twitter 集成。
获得Twitter身份验证后,您可以获得关注者Twitter ID或用户名
现在,您可以阅读第2步中所有关注者的推文
答案 1 :(得分:1)
Twitter's new v1.1 API允许您稍微执行此操作,但您不会通过一次调用获取您的关注者推文列表
以下是我接近它的方法:
<强>集成强>
不再是oAuth与Twitter连接的情况,你必须通过v1.1 authentication process
您需要使用Twitter Gem启用Rails应用:
#config/initializers/twitter.rb
#creates a constant
TWITTER = Twitter::REST::Client.new do |config|
config.consumer_key = "YOUR_CONSUMER_KEY"
config.consumer_secret = "YOUR_CONSUMER_SECRET"
config.access_token = "YOUR_ACCESS_TOKEN"
config.access_token_secret = "YOUR_ACCESS_SECRET"
end
然后你可以直接调用Twitter API:
#app/views/shared/footer.html.erb
<%= TWITTER.followers(213747670) %>
您必须记住Twitter的新API是throttled
<强>后端强>
因为你只能得到你的粉丝,然后是推文,你必须让这个过程分为两个步骤。我会通过将关注者存储在他们自己的表中并使用rake task每天或每小时获取他们的最新推文来接近它:
#app/models/tweet.rb
Class Tweet < ActiveRecord::Base
end
tweets
id | username | latest | created_at | updated_at
这将允许您将twitter关注者添加到表中,并使用rake任务更新他们的最新推文:
#app/controllers/tweets_controller.rb
def new
@tweet = Tweet.new
end
def create
@tweet = Tweet.new(tweet_params)
@tweet.save
end
private
def tweet_params
params.require(:tweet).permit(:username)
end
#lib/tasks/tweet.rake
namespace :tweets do
desc "Update Latest Tweets"
task :latest => :environment do
followers = Tweet.all.map(&:username).to_a
followers.each do |follower|
tweets = TWITTER.user_timeline(follower)
follower.update_attributes({latest: tweets.first})
end
end
end
您可以从控制台运行rake任务,如下所示:rake tweets:latest
答案 2 :(得分:0)
尝试这是一件有趣的事情!我最近制作了一个基于浏览器的小游戏,使用twitter进行身份验证。通过这样做,我发现以下资源非常有用:
github上的Sferik提供了项目Sign in With Twitter,作为如何将rails应用程序与twitter的API集成的示例。那里有很多优秀的代码,非常简单。我使用该项目作为我自己的基础。
Sferik还提供了twitter gem和t,一个twitter CLI。这些将对您的旅程有所帮助。
除@royalGhost's answer中建议的资源外,我还会提到this SO question。