使用现有推文模型实现转推功能
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
我正在尝试为 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