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

Teacherが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 に答える