显示推文和转推时的区别

Making the difference between a tweet and a retweet when showing them

  我目前正在实现一个类似于 Twitter 的 Web 应用程序。在我的 Twitter 应用程序中,我有一个动作 'retweet',它显然也在真实的 Twitter 中。

我是怎么想到实施它的?

我将有一个包含以下列的模型:

  一切顺利。当我必须 return 所有推文时,我只需要使用“+”连接 2 个数组(一个包含推文,一个包含转推)。此操作将按时间顺序显示推文,但我无法添加 "retweeted by username",除非我按 tweet_id 和 retweeted_at 时间(推文的时间! = retweeted_at_time) 以实际确认该推文是转推。在确认这是转推后,我添加了“这个 post 被用户名

转推了

  这让我想到了我的问题:有没有更简单的方法来做到这一点?我想不出使用这个模型的任何其他方法。 有没有更高效的模型?

您需要使用 .joins.include 来获取您的转推,这样最终您将得到 ActiveRecord collection,而不是 Array .

这意味着您可以获得 retweeted_by_username 而无需再次获取数据库,因为记录已经加载。

我们可以采取其他方式,选择将推文和转推存储在同一个 table 中,字段名为 original_tweet_id,这样您就可以解决当前的问题,而且更容易您向转推添加任何文本,您可以将其作为推文文本存储在记录中。稍后你只是检查 original_tweet_id 来验证这是转推还是否。