我有一个允许用户将其他用户标记为收藏夹的模型。 此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
此更改无效。
** /编辑**