0

我在 Ruby on rails 3.1 上使用 declarative_authorization。

一个组有许多专辑(groupalbum),一个组由一个用户创建(组表外键中的user_id)。只有群组的所有者才能创建相册。

这是我的 authorization_rules.rb :

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.

即使我与组的所有者登录。

我的错误在哪里?

4

1 回答 1

0

这不起作用的原因可能有很多。

您是否已将 :index 和 :new 添加到您的权限中?

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

您对当前用户的 :group_albums 有读取权限吗?

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

你叫哪个动作?

于 2013-05-15T13:32:44.500 回答