diff options
Diffstat (limited to 'activerecord/lib/active_record/coders/yaml_column.rb')
-rw-r--r-- | activerecord/lib/active_record/coders/yaml_column.rb | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/coders/yaml_column.rb b/activerecord/lib/active_record/coders/yaml_column.rb index 9b0df119ef..fcecc11aba 100644 --- a/activerecord/lib/active_record/coders/yaml_column.rb +++ b/activerecord/lib/active_record/coders/yaml_column.rb @@ -14,16 +14,21 @@ module ActiveRecord @object_class = object_class end + def dump(obj) + YAML.dump obj + end + def load(yaml) return yaml unless yaml.is_a?(String) && yaml =~ /^---/ begin - obj = YAML::load(yaml) + obj = YAML.load(yaml) unless obj.is_a?(object_class) || obj.nil? raise SerializationTypeMismatch, "Attribute was supposed to be a #{object_class}, but was a #{obj.class}" end + obj rescue *RESCUE_ERRORS yaml end |