使用现有的推文模型实现转推功能

Posted

技术标签:

【中文标题】使用现有的推文模型实现转推功能【英文标题】:Implementing a Retweet function with an existing Tweet model 【发布时间】:2021-02-08 12:39:06 【问题描述】:

我正在尝试为 Twitter 克隆实现转推(转发)功能。我最初认为我可能需要一个单独的转发模型,但我想尝试使用我现有的推文(微博)模型来实现它。

我无法理解架构以及我需要运行哪些迁移。 Micropost 需要一个 Repost 列,但用户需要一个 repost_id 吗?所以我会在 Micropost 中添加一个 Repost 列,它会引用 User?还是我应该将列添加到 User 模型中?

如果转发功能与创建功能类似,不是吗?

  def repost
    @micropost = Micropost.find(params[:id])
    @repost = @micropost.repost by current_user
    if @repost.save
      flash[:success] = "Repost created!"
      redirect_to root_url
    else
      @feed_items = current_user.feed.paginate(page: params[:page])
      render 'static_pages/home'
    end
  end

有什么方法可以编辑我当前的 Micropost 模型,还是我需要使用特定的 Repost 模型?

【问题讨论】:

【参考方案1】:

我的方式是询问我是否需要转发和用户之间的一对多或多对多关系。一个用户可以拥有(制作)许多转发,并且转发可以被许多用户转发,所以这将是多对多的关系。这意味着您需要用户和微博之间的联合表 - 在这种情况下,它的最佳名称是转发。

如果您想反过来考虑 - 您提出的方式:如果您要在 user_id 列中引用 micropost 表中的用户 ID,则只有“足够的空间”来保存一个用户 ID。 .. 所以这将是一个一对多的关联,这对于转发没有多大意义。

对于您关于该方法的问题,一旦用户单击按钮(提交表单)进行转发,您将需要创建一个新的转发实例。你应该看看嵌套资源:https://guides.rubyonrails.org/routing.html#nested-resources

【讨论】:

以上是关于使用现有的推文模型实现转推功能的主要内容,如果未能解决你的问题,请参考以下文章

将验证码识别功能集成到现有的爬虫框架

如何忽略已在 Tweepy 中转发的推文?

从 Tweepy 流中获取转推和最喜欢的计数

主题检测分类模型的推文数据集

仅使用 Twitter 流 API 显示来自单个用户的推文

如何使用 Tweepy 转发评论