J'utilise ActiveAdmin sans espace de nom par défaut (config.default_namespace = false
). J'ai une ressource User
sans espace de noms ainsi qu'une ressource User
dans l'espace de noms :admin
. Les deux utilisent des méthodes de mise à jour personnalisées pour obtenir un comportement différent (les utilisateurs peuvent modifier leurs propres données, tandis que les administrateurs peuvent réinitialiser le mot de passe de n'importe quel utilisateur).ActiveAdmin Inherited Ressource override ne fonctionne pas avec plusieurs espaces de noms?
Ceci est l'utilisateur « par défaut »:
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
Et ceci est l'utilisateur admin:
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
Modification des données utilisateur fonctionne très bien, ainsi que l'invitation de nouveaux utilisateurs. Le problème est la réinitialisation du mot de passe. Lors de l'envoi du formulaire correspondant (route /admin/users/[id]/edit
), le update
des utilisateurs non nominatifs est appelé (comme lors de la soumission de /users/[id]/edit
) au lieu de la mise à jour dans ma ressource utilisateur de l'espace de noms :admin
.
Est-ce un bug ou ai-je mal configuré quelque chose? Je suis honnêtement perplexe devant ce comportement, je ne sais même pas comment procéder pour le déboguer.