【发布时间】:2015-04-13 00:44:22
【问题描述】:
  我目前正在实现一个类似于 Twitter 的 Web 应用程序。在我的 Twitter 应用程序中,我有一个动作“转推”,这显然也在真实的 Twitter 中。
我是怎么想到实现它的?
我将有一个包含以下列的模型:
- 1。 retweeted_tweet_id(转发了哪条推文)
- 2。 who_user_id(谁转发了它)
- 3。 retweeted_at(转发时间)
  一切顺利。当我必须返回所有推文时,我只需要使用“+”来连接 2 个数组(一个包含推文,一个包含转推)。此操作将按时间顺序显示推文,但我将无法添加“由用户名转发”,除非我通过 tweet_id 和 retweeted_at 时间(推文的时间!= retweeted_at_time)再次查询 Retweets 模型以实际确认推文是转推。在确认它是转发后,我添加了“这篇文章是由用户名转发的
  这让我想到了我的问题:有没有更简单的方法可以做到这一点?我想不出使用这个模型的任何其他方法。 有没有更有效的模型?
【问题讨论】:
-
也许在通用架构上考虑其他方法是有意义的?如果推文和转发将在同一张表中,它将使您的生活更轻松。想法?
-
是的,他们会,但我在 stackoverflow 上读过一篇关于这个stackoverflow.com/questions/11654420/… 的帖子,普遍的共识是这个选项更好。好吧,我还需要在我的模型中添加另一行,因为如果我转发推文,我希望能够添加一些我自己的文本:D
-
我明白了,如果您更仔细地查看关于您提到的问题的公认答案,他们建议使用 JOIN 或 INCLUDE。这样,您将拥有活动的记录集合,而不是需要连接的 2 个数组。因此,您可以通过用户名获取转发的推文,而无需两次获取数据库。有意义吗?
-
我认为您指的是为某个用户提取所有推文和转发?如果是这样,那不是我问我是什么的原因。我有疑问的是我需要添加一个特殊的 html 元素让我们说一个
并在其中写 retweeted by username 但这仅适用于 retweets 。如何在不查询 tweet_id 和 created_at 的情况下验证推文是原始推文还是转推? .必须按时间顺序对页面中显示的所有推文和转推进行排序。 (这就是他们的查询所做的)
标签: ruby-on-rails activerecord twitter