Fix error ActiveJob passed class with permitted?

Resolves #48561
Co-authored-by: Sampat Badhe <sampatbadhe@gmail.com>
This commit is contained in:
Alex Baldwin 2023-06-23 10:08:52 -04:00
parent 5899adad4f
commit 719e49485f
2 changed files with 11 additions and 1 deletions

@ -90,7 +90,7 @@ def serialize_argument(argument)
result = serialize_hash(argument)
result[aj_hash_key] = symbol_keys
result
when -> (arg) { arg.respond_to?(:permitted?) }
when -> (arg) { arg.respond_to?(:permitted?) && arg.respond_to?(:to_h) }
serialize_indifferent_hash(argument.to_h)
else
if BigDecimal === argument && !ActiveJob.use_big_decimal_serializer

@ -16,6 +16,11 @@ class ClassArgument; end
class ClassArgument; end
class MyClassWithPermitted
def self.permitted?
end
end
setup do
@person = Person.find("5")
end
@ -112,6 +117,11 @@ class ClassArgument; end
)
end
# Regression test to #48561
test "serialize a class with permitted? defined" do
assert_arguments_unchanged MyClassWithPermitted
end
test "serialize a hash" do
symbol_key = { a: 1 }
string_key = { "a" => 1 }