0

Ruby on rails 3.1에서 declarative_authorization을 사용합니다.declarative_authorization에서 if_attribute가 다중 해시와 작동하지 않습니다.

그룹에 여러 앨범 (groupalbum)이 있으며 그룹은 한 명의 사용자 (그룹 테이블의 외래 키에있는 user_id)로 생성됩니다. 그룹 소유자 만 앨범을 만들 수 있습니다. 여기

has_permission_on [:group_albums], :to => [:create] do 
    if_attribute :group => { :user => is_in { user.groups } } 
end 

내 GroupAlbumsControler입니다 :

class GroupAlbumsController < ApplicationController 
    before_filter :set_group_album_from_params, :only => :show 
    before_filter :set_group_album_new, :only => [:index, :new] 
    filter_access_to :all, :attribute_check => true 
    (...) 
end 

그러나이 작동하지 않습니다 내가 기록하고있어하더라도

You are not allowed to access this action. 

을 여기

내 authorization_rules.rb입니다 그룹의 소유자와

내 실수는 어디에서 왔습니까?

답변

0

이것이 작동하지 않는 데는 여러 가지 이유가있을 수 있습니다.

색인을 추가 했습니까? : 새로운 권한을 얻었습니까?

privileges do 
    privilege :manage, :includes => [:create, :read, :update, :delete] 
    privilege :read, :includes => [:index, :show] 
    privilege :create, :includes => :new 
    privilege :update, :includes => :edit 
    privilege :delete, :includes => :destroy 
end 

현재 사용중인 사용자의 읽기 권한이 있습니까?

has_permission_on [:group_albums], :to => [:create, :read] do 
    if_attribute :group => { :user => is_in { user.groups } } 
end 

어떤 행동을 부릅니까?