我遇到了与Victor Martin几乎相同的问题(你可以看到这里提出的问题)。
我已经获得声明性授权,可用于几乎所有不涉及使用条件的内容。 E.g。
has_permission_on :users, :to => [:edit, :update, :destroy] do
if_attribute :user => is { current_user }
end
声明授权是否有任何常见的陷阱?我正在使用authlogic,我怀疑应用程序控制器中的'current_user'方法可能是问题的根源。
答案 0 :(得分:4)
请注意,如果您在控制器中使用“filter_access_to”,则需要确保“:attribute_check => true”。没有它,条件“if_attribute”声明不会做任何事情。
的更多详细信息答案 1 :(得分:1)
如果您还没有将它添加到ApplicationController:
before_filter :set_current_user
protected
def set_current_user
Authorization.current_user = current_user
end
然后你的规则看起来像这样:
has_permission_on :users, :to => [:edit, :update, :destroy] do
if_attribute :user => is { user }
end
据我所知,declarative_authorization不会调用crontroller上的任何方法,也不知道你的示例中current_user
的含义,但是它给你一个名为{{1}的Authorization.current_user
实例您可以在user
文件中使用。