J'ai une ressource activeadmin qui a une relation d'appartenance_à: utilisateur.
Lorsque je crée une nouvelle instance du modèle dans l'administrateur actif, je souhaite associer l'utilisateur actuellement connecté à l'utilisateur qui a créé l'instance (des éléments plutôt standard que j'imagine).
Alors ... je l'ai eu avec:
controller do
def create
@item = Item.new(params[:item])
@item.user = current_curator
super
end
end
Cependant;) je me demande simplement comment cela fonctionne? J'espérais juste qu'attribuer la variable @item à l'utilisateur puis appeler super fonctionnerait (et c'est le cas). J'ai aussi commencé à regarder à travers la gemme mais je ne pouvais pas voir comment cela fonctionnait réellement.
Tous les indicateurs seraient formidables. Je suppose que c'est quelque chose que InheritedResources vous a donné?
Merci!
J'ai rencontré une situation similaire dans laquelle je n'avais pas vraiment besoin de redéfinir complètement la méthode create. Je voulais vraiment seulement injecter des propriétés avant de sauvegarder, et seulement sur create; très semblable à votre exemple. Après avoir lu la source ActiveAdmin, j'ai déterminé que je pouvais utiliser before_create
pour faire ce dont j'avais besoin:
ActiveAdmin.register Product do
before_create do |product|
product.creator = current_user
end
end
Une autre option:
def create
params[:item].merge!({ user_id: current_curator.id })
create!
end
Vous avez raison, administrateur actif, utilisez InheritedResources
, tous les autres outils que vous pouvez voir à la fin de la page .