From 57ca1d54bb8509e80b33b26b8f5072cd7a200f73 Mon Sep 17 00:00:00 2001 From: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com> Date: Sun, 12 Jan 2020 12:47:26 +0100 Subject: [PATCH] Fix issue with each_serializer not being called in some cases in Rails 4. --- app/controllers/spree/admin/base_controller.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/controllers/spree/admin/base_controller.rb b/app/controllers/spree/admin/base_controller.rb index c1c0179133..67a44ad093 100644 --- a/app/controllers/spree/admin/base_controller.rb +++ b/app/controllers/spree/admin/base_controller.rb @@ -1,3 +1,4 @@ +# rubocop:disable Metrics/ClassLength module Spree module Admin class BaseController < Spree::BaseController @@ -121,13 +122,17 @@ module Spree def render_as_json(data, options = {}) ams_prefix = options.delete :ams_prefix - if [Array, ActiveRecord::Relation].include? data.class + if each_serializer_required?(data) render options.merge(json: data, each_serializer: serializer(ams_prefix)) else render options.merge(json: data, serializer: serializer(ams_prefix)) end end + def each_serializer_required?(data) + ['Array', 'ActiveRecord::Relation'].include?(data.class.name) + end + def serializer(ams_prefix) unless ams_prefix.nil? || ams_prefix_whitelist.include?(ams_prefix.to_sym) raise "Suffix '#{ams_prefix}' not found in ams_prefix_whitelist for #{self.class.name}." @@ -140,3 +145,4 @@ module Spree end end end +# rubocop:enable Metrics/ClassLength