1

我想使用 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

做我想做的事。

4

1 回答 1

1

嗯..我不确定康康舞曲能力中的“动作”是否必须明确地是控制器中的动作。如果不是,你可以做......

# 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
于 2012-04-26T14:47:46.583 回答