使用Rails 4.2.4和ActiveAdmin 1.0.0.pre4。
在ActiveAdmin用户信息中心,我需要检查用户是否有权在用户点击AA提供的默认Delete
链接时删除其他用户。这就是我目前在app/admin/user.rb
中所拥有的:
controller do
before_destroy :check_if_user_can_destroy
def check_if_user_can_destroy(resource)
if current_user == resource || current_user.level < resource.level
puts "plz stop"
return false
end
end
end
当我删除某些我无法删除的人时,文本“plz stop”会输出到控制台,但删除操作仍会发生,并且用户会被删除。
根据我的阅读,在false
操作中返回before
应该会停止后续操作的运行,这是不正确的?
更新1
我改变了一些事情并且结束了这一点,这似乎有效......但我不相信它还有某种原因。我好吗?这样做有什么明显的“陷阱”吗?
当然还在app/admin/user.rb
:
controller do
def destroy
if current_user == resource || current_user.level < resource.level
redirect_to "/admin/users"
else
resource.destroy
end
end
end