【问题标题】: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 模型?

【问题讨论】:

    标签: ruby-on-rails twitter model


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-03
      • 2010-09-29
      • 1970-01-01
      • 2012-06-15
      • 2020-05-18
      • 1970-01-01
      • 2013-03-21
      • 1970-01-01
      相关资源
      最近更新 更多