1
我在没有默认命名空间的情况下使用ActiveAdmin(config.default_namespace = false
)。我在:admin
命名空间中有一个User
资源没有命名空间,User
资源。两者都使用自定义更新方法来实现不同的行为(用户可以更改自己的数据,而管理员可以重置任何用户的密码)。ActiveAdmin继承的Ressource覆盖不适用于多个命名空间?
这是“默认”的用户:
ActiveAdmin.register User do
actions :show, :edit, :update
menu false
permit_params ...
controller do
def update
# change account data
...
end
end
form do |f|
...
end
end
这是管理员用户:
ActiveAdmin.register User, namespace: :admin do
actions :all
menu
permit_params ...
controller do
def create
# invitation code
...
end
def update
# password reset code
...
end
end
index do
...
end
filter ...
form partial: 'form'
end
更改用户数据工作得很好,并邀请新用户。问题是密码重置。在提交相应表单(路由/admin/users/[id]/edit
)时,将调用非名称空间用户的update
(与提交/users/[id]/edit
时相同),而不是我的:admin
名称空间用户资源中的更新。
这是一个错误还是我错误地配置了一些东西?我真的被这种行为难倒了,我甚至不知道如何进行调试。