试图将推文保存到模型中

时间:2015-03-17 14:49:55

标签: ruby-on-rails twitter

所以我觉得我已经得到了这个的部分,但无法解决这个难题。

所以我有一个User模型,它可以跟随几个关键字(查询)。协会是这样的:

用户

 has_many :campaigns #they can add and remove keywords to this association
 has_many :alerts, through: campaigns

现在我想要做的是创建一个搜索User.campaigns的方法,将它们保存在警报中。因此,我可以看到哪个查询与哪个关键字相关联(通过campaign_id)。

这就是我所拥有的:

keywords = current_user.campaigns.map(&:keywords)

current_user.twitter.search(keywords, result_type: 'recent').take(5).collect do |tweet|
 "#{tweet.id} #{tweet.user.id}"
end

现在我的代码存在问题,即关键字是一个数组。我想要它做的是一次搜索一个数组。

然后我想将它保存到Alert表中。我的列有'tweet_id'和'owner_id'以及'campaign_id'。

理想情况下,我有一个cron工作,每15分钟执行一次。

我不知道从哪里开始。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果您正在寻找的是如何搜索每个关键字,那么应该这样做: 根据OP

的说明进行编辑
current_user.campaigns.each do |campaign|
  current_user.twitter.search(campaign.keyword, result_type: 'recent').take(5).map do |tweet|
   "#{tweet.id} #{tweet.user.id}"
   #new_alert = current_user.alerts.create(campaign: campaign....)
  end
end

请注意,可能有一种方法让twitter.search仅返回5个结果,这将使.take调用不必要。

另请注意,我交换了.map和.collect - 它们大部分都是可互换的,但语义上.collect对我来说意味着"检索一些值"和.map意味着"对每个值采取一些行动"。

这有帮助吗?