1

我有一个模型,允许用户将其他用户标记为收藏夹。这种 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

这种改变没有效果。

** /编辑 **

4

0 回答 0