From df04f8704abc3754c63c488433dac8c30573da6b Mon Sep 17 00:00:00 2001
From: Michael de Silva <michael@mwdesilva.com>
Date: Tue, 18 Oct 2016 05:32:20 +0530
Subject: [PATCH] Fix #913 for Serialize Matcher error undefined method
`cast_type' in Rails 5
This patch is based on the discussed held in issue #913, and a solution
that I've proposed and others have confirmed as good to go :clap:.
Ref: https://github.com/thoughtbot/shoulda-matchers/issues/913#issuecomment-219187051
---
lib/shoulda/matchers/rails_shim.rb | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/lib/shoulda/matchers/rails_shim.rb b/lib/shoulda/matchers/rails_shim.rb
index 5159468c..471d9049 100644
--- a/lib/shoulda/matchers/rails_shim.rb
+++ b/lib/shoulda/matchers/rails_shim.rb
@@ -23,9 +23,11 @@ def self.serialized_attributes_for(model)
if defined?(::ActiveRecord::Type::Serialized)
# Rails 5+
model.columns.select do |column|
- column.cast_type.is_a?(::ActiveRecord::Type::Serialized)
+ model.type_for_attribute(column.name).is_a?(
+ ::ActiveRecord::Type::Serialized,
+ )
end.inject({}) do |hash, column|
- hash[column.name.to_s] = column.cast_type.coder
+ hash[column.name.to_s] = model.type_for_attribute(column.name).coder
hash
end
else