如何让cancancan检查参数以查看用户是否可以更新?
控制器获取:
Parameters: {"offer"=>{"revoked"=>"1", "user_id"=>"14"}, "id"=>"53"}
ability.rb:
can :update, Controller, :user_id => user.id
cannot :update, Controller, { :revoked => nil }
控制器代码:
@offer.update(params)
这给我一个Cancancan错误,说明用户未获得授权。我想我需要指定:revoked在offer hash中,但是我无法找到正确的代码。
答案 0 :(得分:2)
如何更改Ability类可以访问的内容:
https://github.com/ryanb/cancan/wiki/Accessing-Request-Data
或者如何将params更专门地传递给Ability类:
https://stackoverflow.com/a/9472881/4880924
# CanCan - pass params in to Ability # https://github.com/ryanb/cancan/issues/133 def current_ability @current_ability ||= Ability.new(current_user, params) end
然后,只需访问参数的相关部分并检查它是否通过。