我在我的一个项目中在 authlogic 之上使用 acl9。我喜欢 acl9 的方法,但我想我正在尝试做一些不那么简单的事情(不是说不可能)。
出于可用性的原因,我希望有一个内联管理面板。例如,假设我有一个资源拍卖和一个嵌套资源拍卖/出价。当普通用户在拍卖/1(1=id)上时,他应该看到“普通”的东西(描述、价格……),同一站点上的特权用户应该有额外的链接来编辑拍卖(=拍卖/ 1/编辑)。这就是乐趣的开始。
也许我看的不够近或看错了地方,但我找不到方法来确定我当前的用户是否被授权进行编辑操作。显然,我可以向所有人显示链接并让编辑操作拒绝普通用户,但这不是一个可行的选择。让我烦恼的是信息已经在系统中(见access_control
下面的块),我似乎找不到使用它的方法。这在很多层面上都不是 DRY。
access_control do
allow :privileged, :to => [:index, :show, :edit, :update]
allow anonymous, :to => [:new, :show, :create]
end
如果我想确定用户拥有哪些权限,情况会变得更糟,auctions/1/bids/2/edit
因为这是在一个完全不同的控制器中。
如何提前访问该信息,然后决定是否显示要编辑的链接?这是不可能的(不改变 acl9 本身)还是我看起来不够努力?有没有更符合我要求的授权插件?