Permalink
Browse files

Merge pull request #13593 from oliveiraethales/store_yaml_coder

Fix: ActiveRecord::Store TypeError conversion when using YAML coder
  • Loading branch information...
2 parents 2d1d426 + 901a0c8 commit f2b80a41b5c163b32dfdd0fa797466543c6ec0e9 @senny senny committed Jan 6, 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 f2b80a4

Please sign in to comment.