【发布时间】:2017-12-22 03:23:26
【问题描述】:
我正在使用没有默认命名空间 (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命名空间用户资源中更新。
这是一个错误还是我配置错误?老实说,我被这种行为难住了,我什至不知道如何继续调试。
【问题讨论】:
标签: ruby-on-rails activeadmin inherited-resources