Permalink
Browse files

Fix: ActiveRecord::Store TypeError conversion when using YAML coder

Renaming the test accordingly to its behaviour

Adding 'Fixes' statement to changelog

Improving tests legibility & changelog

Undoing mistakenly removed empty line & further improving changelog
  • Loading branch information...
1 parent 3a48b83 commit 901a0c8b4a3b1de8ff1ec8feb4b67f727c07dc8b @oliveiraethales oliveiraethales committed Jan 5, 2014
@@ -1,3 +1,10 @@
+* Fixed ActiveRecord::Store nil conversion TypeError when using YAML coder.
+ In case the YAML passed as paramter is nil, uses an empty string.
+
+ Fixes #13570.
+
+ *Thales Oliveira*
+
* Deprecate unused `ActiveRecord::Base.symbolized_base_class`
and `ActiveRecord::Base.symbolized_sti_name` without replacement.
@@ -178,7 +178,7 @@ def dump(obj)
end
def load(yaml)
- self.class.as_indifferent_hash(@coder.load(yaml))
+ self.class.as_indifferent_hash(@coder.load(yaml || ''))
end
def self.as_indifferent_hash(obj)
@@ -162,4 +162,8 @@ class StoreTest < ActiveRecord::TestCase
assert_equal [:color], first_model.stored_attributes[:data]
assert_equal [:width, :height], second_model.stored_attributes[:data]
end
+
+ test "YAML coder initializes the store when a Nil value is given" do
+ assert_equal({}, @john.params)
+ end
end
@@ -14,6 +14,7 @@ def load(s)
end
belongs_to :account
+ store :params, accessors: [ :color ], coder: YAML
store :settings, :accessors => [ :color, :homepage ]
store_accessor :settings, :favorite_food
store :preferences, :accessors => [ :remember_login ]
@@ -45,6 +45,7 @@ def create_table(*args, &block)
t.string :preferences, null: true, default: '', limit: 1024
t.string :json_data, null: true, limit: 1024
t.string :json_data_empty, null: true, default: "", limit: 1024
+ t.text :params
t.references :account
end

0 comments on commit 901a0c8

Please sign in to comment.