Permalink
Browse files

Merge pull request #13593 from oliveiraethales/store_yaml_coder

Fix: ActiveRecord::Store TypeError conversion when using YAML coder
Conflicts:
	activerecord/CHANGELOG.md
	activerecord/lib/active_record/store.rb
	activerecord/test/schema/schema.rb
  • Loading branch information...
1 parent 5d3a8f1 commit 7678ab662e7c3aba046c22d64af9bdea2beba1fb @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*
+
* Fix presence validator for association when the associated record responds to `to_a`.
*gmarik*
@@ -138,7 +138,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)
@@ -155,4 +155,8 @@ class StoreTest < ActiveRecord::TestCase
assert_raise(NoMethodError) { @john.stored_attributes = Hash.new }
assert_raise(NoMethodError) { @john.stored_attributes }
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 7678ab6

Please sign in to comment.