政策 </跨度> ,继本教程:
https://www.youtube.com/watch?v=qruGD_8ry7k
我有一个用户 调节器 </跨度> 有:
class UsersController&lt; ApplicationController的
before_action:set_user,只有锟 调节器 </跨度> ,所以我想我不需要在我的用户中包含它 政策 </跨度> 。那是对的吗?是不是我必须按照上面的方式初始化用户模型(或者仅仅是这样的情况)
本教程展示了一个名为attr_reader的东西。我已经开始从rails 4学习rails了,所以我不知道这些单词是什么意思。我认为这与在控制器中将用户参数列入白名单的旧方法有关,所以我认为我不需要在我的用户策略中包含它。那是对的吗? 醇>
不,这很重要。
attr_reader 的 创建实例变量和返回每个实例变量值的相应方法。 强> - 来自Ruby官方文档
attr_reader
基本上如果你这样做
class A attr_reader :b end a = A.new
你可以做 a.b 访问 b 实例变量。这很重要,因为在您可能允许的每项政策中 read 访问实例变量。 @current_user 和 @user 是实例变量。
a.b
b
read
@current_user
@user
是不是我必须按照上面的方式初始化用户模型(或者只是用户以外的模型中的情况,因为我正在初始化current_user,它可能已经初始化了用户? 醇>
您必须手动初始化它。目前,你的方式是正确的。好。
是否有必要将强对策移至政策中,或者如果我将它们留在控制器中,这是否有效? 醇>
这是选择的问题。即使你将它保存在控制器中也能工作。仅当您希望以非常复杂的方式将属性列入白名单时才移至策略。
注意: device , pundit 和 rolify 宝石工作得很好,但有一些相同的功能,所以要小心和坚持如何做什么。
device
pundit
rolify
例如,您可以使用 devise_for :users , :students , :teachers 这将提供3个不同的链接来登录相应的资源。你可以用它做很多事情。您可以根据资源进一步验证网址 authenticate 方法。校验 https://github.com/plataformatec/devise/wiki/How-To:-Define-resource-actions-that-require-authentication-using-routes.rb 这种事情也可以用来完成 pundit 与政策和 rolify 同 roles 。
devise_for :users , :students , :teachers
authenticate
roles