J'ai essayé de le faire à partir du contrôleur et du contrôleur de remplacement d'administrateur actif et je ne peux pas le faire fonctionner. P>
Un utilisateur crée un site Web. Current_user a un attribut d'identification Le site Web a un attribut user_id p>
Alors, lorsque je crée un nouveau site Web, je souhaite ajouter l'actuel_user.id dans le site web.user_id. Je ne peux pas. p>
Tout le monde sache comment? p>
En ce moment, j'en ai besoin sur les actions nouvelles / Créer, mais j'aurai probablement besoin de cela sur les actions d'édition / mise à jour également. P>
3 Réponses :
Cela semble fonctionner pour moi: Vous devriez pouvoir remplacer les autres actions de contrôleur de la même manière. p> p>
Vous devez ajouter une méthode «nouvelle» au contrôleur. La méthode «nouvelle» crée un objet de site Web vide qui sera transmis au formulaire. La méthode «nouvelle» par défaut crée simplement un objet @website vide. Votre «nouvelle» méthode doit créer l'objet vide, puis initialiser la valeur de l'utilisateur à l'utilisateur actuel:
ActiveAdmin.register Website do controller do # Custom new method def new @website = Website.new @website.user = current_user #set any other values you might want to initialize end end
N'oubliez pas la définition "Controller", je l'ai vue dans cette réponse.
ActiveAdmin.register Model do # also look in to before_create if hidden on form before_build do |record| record.user = current_user end end See https://github.com/activeadmin/activeadmin/blob/master/lib/active_admin/resource_dsl.rb#L156