Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 坎坎坎:如何处理能力模型中为零的对象?_Ruby On Rails_Cancan_Cancancan - Fatal编程技术网

Ruby on rails 坎坎坎:如何处理能力模型中为零的对象?

Ruby on rails 坎坎坎:如何处理能力模型中为零的对象?,ruby-on-rails,cancan,cancancan,Ruby On Rails,Cancan,Cancancan,我有一个控制器: class UsersController

我有一个控制器:

class UsersControllerCanCan文档规定使用块定义能力的方式与您的方式稍有不同。他们建议在您描述的情况下(当实例为nil时)使用保护而不是块:

我想试试这个。对于其他信息以及我从何处得到这个示例,

似乎使用gem,在创建
@user
变量之前调用
@user\u params
方法;这样做是有意义的,因为创建
@user
变量需要
user_params
,或者至少需要从表单中分配值

如果CanCanCan在分配表单中的值之前分配一个新的
@user
变量(当然是
user
类型),则以下代码将用于
\create

private
def用户参数
允许的_键=[:名称,
:电邮,
:密码,
:密码\u确认]

谢谢你指出这一点。它解释了当控制器中的
@user
nil
时,为什么不计算块。
# don't do this
can :edit_role, User do |user|
  user.new_record? # this won't be called for User.accessible_by(current_ability, :edit_role)
end

# do this
can :edit_role, User if user.new_record?