HABTM 네스트된 리소스에 대한 도움말

4475 단어 cancan

묘사

사용자/연락처 및 그룹 보유
cancan 불러오기와 권한 부여 자원을 사용하고 있습니다
연락인과 단체 사이에는 많은 연락이 있다.
내가 만든 연락처 리스트에서, 나는 호출하고 있다. 그룹, 내가 본 것은 모든 그룹이다. 사용자가 가지고 있는 그룹이 아니라.
내 cancan 능력 파일에서, 나는 항상 can:manage,Contact,:user id=>user를 넣는다.그것은 단지 그가 가지고 있는 사용자 연락처만 자동으로 표시할 뿐이다.나는 문서에서 그것을 일하게 하려고 한다. 예를 들어 can:manage,Contact:user id=>user 등이다.id,:groups=>{:user id=>user.id} 그러나 나는 그것을 일하게 할 수 없다. 나는 단지 멋대로 추측하고 있을 뿐이다.
그룹과 연락처는 사용자 밑에 끼워져 있습니다. 그룹에 있을 때 컨트롤러 cancan은 내 그룹만 표시하지만, 연락처에서 그룹 목록을 가져오려고 시도할 때, 끼워 넣는 것을 무시합니다.
역할 영역을 만드는 것을 통해 해결 방법을 찾았지만, 그것은 엉망이었다. (contacts->new에서 내 @groups.ownedbyuser (현재 사용자) 를 생성하고formtastic에서 사용하십시오:collection@groups. 그러나 이 작업을 자동으로 완성할 수 있기를 바랍니다.
도와주세요.
진심으로
Jbeasley

토론 #1

당신은 직접 이런 연락처로부터 그룹을 얻었습니까?
contact.groups
기본 활동 기록 동작을 덮어쓰지 않으므로 CanCan을 건너뜁니다.범위accessible_by를 추가해야 합니다.
contact.groups.accessible_by(current_ability)
만약 효과가 있다면 저에게 알려 주세요.

토론 #2

나는 연락처에서 그룹을 얻지 못했다. 왜냐하면 사용자가 연락처를 만들 때 가지고 있는 그룹을 원하기 때문이다.
도움말을 통해 접근할 수 있기 때문에 사용자 정의 범위를 사용할 필요가 없습니다.현재 내 연락처 및 컨트롤러
def new
@groups = Group.accessible_by(current_ability)
end
내 형식으로.
        <%= f.input :groups, :collection => @groups, :as => :check_boxes, :label => 'Groups' %>
그러나 나는 내 표가 이렇기를 바란다.
(이하 모든 그룹을 되돌려줍니다 - 저는 cancan이 현재 사용자가 가지고 있는 그룹만 표시하기를 원합니다)
        <%= f.input :groups, :as => :check_boxes, :label => 'Groups' %>
나는 칸칸이 이 점을 해낼 수 있을 것 같아서, 나는 방금 어떻게 해야 할지 확정했다.

토론 #셋

나는 그것을 더 좋아한다. 왜냐하면 @groups=Group을 넣는 것을 좋아하지 않기 때문이다.new &edit actions

토론 #4

에서 (현재 능력) 방문할 수 있습니다. 분명히 저는 장애인입니다.나 이렇게 할 수 있어.
<%= f.input :groups, :collection => @user.groups, :as => :check_boxes, :label => 'Groups' %>
현재 사용자 그룹만 표시하는 cancan을 통과합니다.

토론 #5

호출@user.groups은 사용자groups를 통해 연결되기 때문에 주어진 사용자의 그룹만 가져옵니다.그것은 고비를 넘지 않을 것이다.능력 클래스의 그룹 권한을 변경하면 표시되지 않지만, 변경할 필요가 없으면 @user.groups 정상적으로 작동할 수 있습니다.

토론 #6

해명해 주셔서 감사합니다.
루비/rails에 의하면 이것이 가장 좋은 방법입니까 아니면 가장 적합한 방법입니까
그렇습니까?
그리고 어떻게 해야만 팀을 캔캔캔을 통과시킬 수 있습니까?이 가능하다, ~할 수 있다,...
나는 루비의 신출내기여서 어떤 나쁜 습관도 기르고 싶지 않다.
2011년 5월 28일 오전 11:28, "ryanb" [email protected]
쓰기:

Calling @user.groups goes through the User's groups association so it's only fetching the groups for the given user. It's not going through CanCan there. If you change the group permissions in the Ability class it won't be represented there, however if you don't need to change it then @user.groups will work fine.

Reply to this email directly or view it on GitHub: https://github.com/ryanb/cancan/issues/388#comment_1254226

토론 #7

이렇게 하는 것은 칸칸이 현재 추천하는 방식이다.
<%= f.input :groups, :collection => Group.accessible_by(current_ability), :as => :check_boxes, :label => 'Groups' %>
이렇게 하면 Ability 클래스에 정의된 모든 제한이 여기에 반영됩니다.
그러나 이전 릴리즈에서는 작동하지 않으므로 CanCan 1.6.5를 사용해야 합니다.

토론 #8

네가 바로 그 사람이야!
감사합니다!
2011년 5월 30일 오후 1:39, "ryanb" [email protected]
쓰기:

Doing this is the current recommended way in CanCan.

ruby <%= f.input :groups, :collection => Group.accessible_by(current_ability), :as => :check_boxes, :label => 'Groups' %>

This way any restrictions you define in the Ability class will be reflected here.

However be certain you're using CanCan 1.6.5 because it won't work in earlier versions.

Reply to this email directly or view it on GitHub: https://github.com/ryanb/cancan/issues/388#comment_1262535

좋은 웹페이지 즐겨찾기