我想使用cancan来更新模型的某个属性而不是其他属性。这是我的更新操作的样子。
class UsersController < ApplicationController
load_and_authorize_resource
def update
respond_with User.update(params[:id], params[:user])
end
end
如果resource.instance_of?教师
can [:read, :update], User do |user|
resource.users.include? user
end
我希望教师能够修改user.course_id,但没有别的。我应该如何改变
can :update, User
做我想做的事。
答案 0 :(得分:1)
嗯..我不确定cancan能力中的'动作'是否必须明确地成为控制器中的动作。如果没有,你可以做......
# ability.rb
if resource.instance_of? Teacher
can :update_course, User
end
# Controller
def update
params[:user].delete(:course_id) if cannot? :update_course, User
respond_with User.update(params[:id], params[:user])
end