Fix shoulda-matchers in Rails 5

Backports a fix for https://github.com/thoughtbot/shoulda-matchers/issues/913.
This can be removed once new shoulda-matchers version is released.
This commit is contained in:
Jan Provaznik 2018-06-13 13:21:12 +02:00
parent fba123a329
commit 6d902e07d9
1 changed files with 27 additions and 0 deletions

View File

@ -0,0 +1,27 @@
# monkey patch which fixes serialization matcher in Rails 5
# https://github.com/thoughtbot/shoulda-matchers/issues/913
# This can be removed when a new version of shoulda-matchers
# is released
module Shoulda
module Matchers
class RailsShim
def self.serialized_attributes_for(model)
if defined?(::ActiveRecord::Type::Serialized)
# Rails 5+
serialized_columns = model.columns.select do |column|
model.type_for_attribute(column.name).is_a?(
::ActiveRecord::Type::Serialized
)
end
serialized_columns.inject({}) do |hash, column| # rubocop:disable Style/EachWithObject
hash[column.name.to_s] = model.type_for_attribute(column.name).coder
hash
end
else
model.serialized_attributes
end
end
end
end
end