declarative_authorization:控制对没有显式模型的嵌套资源的访问

时间:2010-07-21 15:28:48

标签: ruby-on-rails-3 declarative-authorization

我有一个允许用户将其他用户标记为收藏夹的模型。 此HABTM关系在用户模型中定义:

class User < ActiveRecord::Base
  has_and_belongs_to_many :favorites, :class_name => "User", :join_table => "favorites", :association_foreign_key => "favorite_id", :foreign_key => "user_id"
end

FavoritesController只需要三个动作(索引,创建, 销毁)管理用户的收藏夹。

规则:只允许经过身份验证的用户(current_user)进行管理 他们的收藏夹。

最初,我试图在authorization_rule.rb中表示此规则 文件:

# allow authenticated user to update profile
has_permission_on :users, :to => :change do
  if_attribute :id => is { user.id }
  has_permission_on :favorites, :to => [:index,:create,:destroy]
end

这不起作用,可能是因为收藏夹没有 显式模型(即favorite.rb)。虽然我错了 此

似乎正确的方法是代表规则 FavoritesController:

filter_access_to :all, :nested_in => :users
...

但我不确定如何正确地表达规则。

非常感谢协助。

**编辑**

有人建议我在这种情况下使用上下文来控制访问: setting permissions for a no-model controller

我尝试修改FavoritesController:

filter_access_to :all, :context => :favorites

此更改无效。

** /编辑**

0 个答案:

没有答案