ruby on rails - form - Rails: activeadmin overriding create action
custom controller activeadmin (4)
Me encontré con una situación similar en la que realmente no necesitaba anular completamente el método de creación. Realmente solo quería inyectar propiedades antes de guardar, y solo en crear; muy similar a tu ejemplo. Después de leer la fuente de ActiveAdmin, determiné que podía usar before_create
para hacer lo que necesitaba:
ActiveAdmin.register Product do
before_create do |product|
product.creator = current_user
end
end
Tengo un recurso activeadmin que tiene una relación belongs_to: user.
Cuando creo una nueva Instancia del modelo en el administrador activo, quiero asociar al usuario actualmente conectado como el usuario que creó la instancia (cosas bastante estándar que me imagino).
Entonces ... lo tengo trabajando con:
controller do
def create
@item = Item.new(params[:item])
@item.user = current_curator
super
end
end
Sin embargo;) Me pregunto cómo funciona esto? Solo esperaba que asignar la variable @item al usuario y luego llamar a super funcionaría (y lo hace). También comencé a buscar a través de la gema, pero no pude ver cómo funcionaba realmente.
Cualquier punto sería genial. ¿Asumo que esto es algo que InheritedResources te da?
¡Gracias!
Otra opción:
def create
params[:item].merge!({ user_id: current_curator.id })
create!
end
Según el código fuente de AA , esto funcionó para mí:
controller do
def call_before_create(offer)
end
end
Usted es el administrador activo adecuado, use InheritedResources
, todas las demás herramientas que puede ver al final de la page .