ActiveAdmin 继承的 Ressource 覆盖不适用于多个命名空间?



我正在使用没有默认命名空间(config.default_namespace = false(的ActiveAdmin。我有一个没有命名空间的User资源以及:admin命名空间中的User资源。两者都使用自定义更新方法来实现不同的行为(用户可以更改自己的数据,而管理员可以重置任何用户的密码(。

这是"默认"用户:

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命名空间用户资源中进行更新。

这是一个错误还是我配置错误了什么?老实说,我对这种行为感到困惑,我什至不知道如何继续调试它。

问题不是由于命名空间,而是因为我的形式...... 我正在使用semantic_form_for,它会根据模型自动配置所有内容。由于它接收到User,表单操作将始终将数据发送到默认的User路由而不是:admin路由。手动设置 url 解决了问题。

相关内容

  • 没有找到相关文章

最新更新