From 58df127bd7b501da7da4aac69af4686da5432815 Mon Sep 17 00:00:00 2001 From: Will Gray Date: Wed, 29 Apr 2026 14:56:33 -0500 Subject: [PATCH] Yield in update action like create --- .../administrate/application_controller.rb | 1 + .../admin/application_controller_spec.rb | 27 ++++++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/app/controllers/administrate/application_controller.rb b/app/controllers/administrate/application_controller.rb index 3c13d9c281..dcae7e384a 100644 --- a/app/controllers/administrate/application_controller.rb +++ b/app/controllers/administrate/application_controller.rb @@ -64,6 +64,7 @@ def create def update @resource = resource = requested_resource if resource.update(resource_params) + yield(resource) if block_given? redirect_to( after_resource_updated_path(resource), notice: translate_with_resource("update.success"), diff --git a/spec/controllers/admin/application_controller_spec.rb b/spec/controllers/admin/application_controller_spec.rb index 031a2ad8e5..a504527976 100644 --- a/spec/controllers/admin/application_controller_spec.rb +++ b/spec/controllers/admin/application_controller_spec.rb @@ -46,7 +46,7 @@ def after_resource_updated_path(requested_resource) end end - describe "creation yeilds resource" do + describe "creation yields resource" do controller(Admin::OrdersController) do attr_reader :resource @@ -73,6 +73,31 @@ def create end end + describe "updating yields resource" do + controller(Admin::OrdersController) do + attr_reader :resource + + def update + super do |resource| + @resource = resource + end + end + end + + it "yields the updated resource after creation" do + order = create(:order) + params = order.attributes.except( + "id", + "created_at", + "updated_at", + "shipped_at" + ) + + put :update, params: {id: order.to_param, order: params} + + expect(controller.resource).to be_a(Order) + end + end describe "authorization" do controller(Administrate::ApplicationController) do def resource_class