From 9c3bdddee7caaa4bbf5b67b50669384cab98f348 Mon Sep 17 00:00:00 2001 From: Dat Le Date: Wed, 7 Jun 2023 14:34:35 +0700 Subject: [PATCH 1/2] Cover inherited schema from chilren controllers --- lib/dry/rails/features/safe_params.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/dry/rails/features/safe_params.rb b/lib/dry/rails/features/safe_params.rb index bc095f0..80990c8 100644 --- a/lib/dry/rails/features/safe_params.rb +++ b/lib/dry/rails/features/safe_params.rb @@ -63,7 +63,13 @@ def safe_params # # @api public def schemas - self.class.schemas + return @schemas if defined? @schemas + + @schemas = if self.class.superclass.include?(Dry::Rails::Features::SafeParams) + self.class.schemas.merge(self.class.superclass.schemas) + else + self.class.schemas + end end private From f02eff88ad122118dd8380d5985fd16251f099e6 Mon Sep 17 00:00:00 2001 From: Dat Le Date: Wed, 7 Jun 2023 14:38:29 +0700 Subject: [PATCH 2/2] Update rspec --- ...nherited_safe_params_callbacks_controller.rb | 4 ++++ spec/dummy/config/routes.rb | 1 + .../inherited_safe_params_callbacks_spec.rb | 17 +++++++++++++++++ 3 files changed, 22 insertions(+) create mode 100644 spec/dummy/app/controllers/inherited_safe_params_callbacks_controller.rb create mode 100644 spec/requests/inherited_safe_params_callbacks_spec.rb diff --git a/spec/dummy/app/controllers/inherited_safe_params_callbacks_controller.rb b/spec/dummy/app/controllers/inherited_safe_params_callbacks_controller.rb new file mode 100644 index 0000000..0e03649 --- /dev/null +++ b/spec/dummy/app/controllers/inherited_safe_params_callbacks_controller.rb @@ -0,0 +1,4 @@ +# frozen_string_literal: true + +class InheritedSafeParamsCallbacksController < SafeParamsCallbacksController +end diff --git a/spec/dummy/config/routes.rb b/spec/dummy/config/routes.rb index aac2a20..8098fac 100644 --- a/spec/dummy/config/routes.rb +++ b/spec/dummy/config/routes.rb @@ -5,6 +5,7 @@ get "users/new/:id" => "users#new" get "safe_params_callbacks/show/:id" => "safe_params_callbacks#show" + get "inherited_safe_params_callbacks/show/:id" => "inherited_safe_params_callbacks#show" get "/api/users/show/:id" => "api_users#show" get "/api/users/new/:id" => "api_users#new" diff --git a/spec/requests/inherited_safe_params_callbacks_spec.rb b/spec/requests/inherited_safe_params_callbacks_spec.rb new file mode 100644 index 0000000..005afe3 --- /dev/null +++ b/spec/requests/inherited_safe_params_callbacks_spec.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +RSpec.describe "InheritedSafeParamsCallbacksController", type: :request do + describe "GET /inherited_safe_params_callbacks/show" do + it "returns a successful response code" do + get "/inherited_safe_params_callbacks/show/312" + + expect(response).to have_http_status(200) + end + + it "returns errors" do + get "/inherited_safe_params_callbacks/show/oops" + + expect(response).to have_http_status(422) + end + end +end