我有一个模型,允许用户将其他用户标记为收藏夹。这种 HABTM 关系在 User 模型中定义:
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
收藏夹控制器只需要三个操作(索引、创建、销毁)来管理用户的收藏夹。
规则:仅允许经过身份验证的用户 (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)。虽然我可能是错的。
似乎正确的方法是在收藏夹控制器中表示规则:
filter_access_to :all, :nested_in => :users
...
但我不确定如何在这里正确地表示规则。
非常感谢您的帮助。
** 编辑 **
有人建议我在这种情况下使用上下文来控制访问: 为无模型控制器设置权限。
我尝试修改收藏夹控制器:
filter_access_to :all, :context => :favorites
这种改变没有效果。
** /编辑 **