Ruby on rails Rails 4防止错误用户创建喜欢的正确方法

Ruby on rails Rails 4防止错误用户创建喜欢的正确方法,ruby-on-rails,ruby,Ruby On Rails,Ruby,我试图在谷歌上找到这个,但似乎找不到任何东西。我有一个名为Likes的模型,以及一个只属于事件和用户的控制器。我想防止人们在未登录时创建like,并且不允许他们为其他用户创建like。正确的方法是什么 谢谢当您使用基于用户的系统时,所有与用户拥有的数据相关的查询都需要包括用户,或来自用户。大多数身份验证系统都有一个助手来获取当前用户,通常称为current\u user 假设您的模型中有一些东西,为了“喜欢”某个事件,您可以通过以下几种方式进行: current_user.likes.creat

我试图在谷歌上找到这个,但似乎找不到任何东西。我有一个名为Likes的模型,以及一个只属于事件和用户的控制器。我想防止人们在未登录时创建like,并且不允许他们为其他用户创建like。正确的方法是什么


谢谢

当您使用基于用户的系统时,所有与用户拥有的数据相关的查询都需要包括用户,或来自用户。大多数身份验证系统都有一个助手来获取当前用户,通常称为
current\u user

假设您的模型中有一些东西,为了“喜欢”某个事件,您可以通过以下几种方式进行:

current_user.likes.create(event_id: params[:event_id])
Like.create(event_id: params[:event_id], user: current_user)

验证也会有所帮助,确保事件和用户ID始终存在。如果没有用户登录,这将使其失败,假设有人猜测了尝试手动创建like的路径。

你是说,like检查
当前用户
?是的,我如何在模型中做到这一点?这是可能的,但这是一种糟糕的风格。在控制器中执行。为什么在模型中执行不好的样式?因为当前用户与模型无关。这是本期课程的一部分。会话是控制器的事,这是有道理的。但是如果用户没有登录怎么办?我如何在控制器中处理这个问题?您看过任何身份验证框架吗?比如说。在Desive中,您将在\u过滤器之前添加
,以在访问任何控制器方法之前强制进行身份验证,以确保有
当前\u用户
。因此,如果没有登录用户,该方法将永远不会被命中,因此您不必担心。