Ruby on rails 使用现有Tweet模型实现转发功能

Ruby on rails 使用现有Tweet模型实现转发功能,ruby-on-rails,twitter,model,Ruby On Rails,Twitter,Model,我正在尝试为Twitter克隆实现转发(repost)功能。我最初认为我可能需要一个单独的转发模型,但我想尝试使用我现有的tweet(micropost)模型来实现它 我很难理解模式以及需要运行哪些迁移。Micropost需要一个Repost列,但用户需要一个Repost\u id吗?所以我会在Micropost中添加一个Repost列,它会引用用户?或者我应该将该列添加到用户模型中吗 另外,如果repost功能的工作方式与create类似,那么它会不会工作 def repost @

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

我很难理解模式以及需要运行哪些迁移。Micropost需要一个Repost列,但用户需要一个Repost\u id吗?所以我会在Micropost中添加一个Repost列,它会引用用户?或者我应该将该列添加到用户模型中吗

另外,如果repost功能的工作方式与create类似,那么它会不会工作

  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模型?

我的方法是询问我是否需要Repost和用户之间的一对多或多对多关系。一个用户可以有(生成)多个repost,并且一个repost可以由多个用户进行repost,因此这将是一种多对多关系。这意味着您需要一个用户和micropost之间的联合表——在本例中,它的最佳名称是repost

如果你想从另一个角度来考虑这个问题——就像你提出的那样:如果你在用户id列中引用micropost表中的用户id,那么只有“足够的空间”来保存一个用户id。。。因此,这将是一对多的关联,这对重新发布没有多大意义


对于有关该方法的问题,您需要在用户单击按钮(提交表单)进行重新发布后创建一个新的重新发布实例。您应该看看嵌套资源:

我的方法是询问我是否需要在repost和用户之间建立一对多或多对多的关系。一个用户可以有(生成)多个repost,并且一个repost可以由多个用户进行repost,因此这将是一种多对多关系。这意味着您需要一个用户和micropost之间的联合表——在本例中,它的最佳名称是repost

如果你想从另一个角度来考虑这个问题——就像你提出的那样:如果你在用户id列中引用micropost表中的用户id,那么只有“足够的空间”来保存一个用户id。。。因此,这将是一对多的关联,这对重新发布没有多大意义

对于有关该方法的问题,您需要在用户单击按钮(提交表单)进行重新发布后创建一个新的重新发布实例。您应该看看嵌套资源: