Ruby on rails 坎坎坎:如何处理能力模型中为零的对象?
我有一个控制器:Ruby on rails 坎坎坎:如何处理能力模型中为零的对象?,ruby-on-rails,cancan,cancancan,Ruby On Rails,Cancan,Cancancan,我有一个控制器: class UsersController
class UsersController CanCan文档规定使用块定义能力的方式与您的方式稍有不同。他们建议在您描述的情况下(当实例为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?