ActiveAdmin Inherited Ressource 覆盖不适用于多个名称空间?
ActiveAdmin Inherited Ressource override doesn't work with multiple namespaces?
我正在使用没有默认命名空间的 ActiveAdmin (config.default_namespace = false
)。我有一个没有命名空间的 User
资源以及 :admin
命名空间中的一个 User
资源。两者都使用自定义更新方法来实现不同的行为(用户可以更改自己的数据,而管理员可以重置任何用户的密码)。
这是 "default" 用户:
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 解决了问题。
我正在使用没有默认命名空间的 ActiveAdmin (config.default_namespace = false
)。我有一个没有命名空间的 User
资源以及 :admin
命名空间中的一个 User
资源。两者都使用自定义更新方法来实现不同的行为(用户可以更改自己的数据,而管理员可以重置任何用户的密码)。
这是 "default" 用户:
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 解决了问题。