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

Implementing a Retweet function with an existing Tweet model

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

我无法理解架构以及我需要进行哪些迁移 运行。一个微博需要一个转贴专栏,但是用户需要一个 repost_id 吗?所以我会在微博中添加一个转发栏,它会引用用户?或者我真的应该将列添加到用户模型中吗?

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

  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

有什么方法可以编辑我当前的微博模型,或者我需要使用特定的转发模型吗?

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

如果你想换个角度思考它——你提出的方式:如果你在微博table中的user_id列中引用用户id,那么只有“足够 space” 来保存一个用户 ID...所以这将是一对多的关联,这对于转发来说没有多大意义。

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