diff options
author | José Valim <jose.valim@gmail.com> | 2012-03-10 01:06:30 -0800 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2012-03-10 01:06:30 -0800 |
commit | 3e776496d0a85942b65935e69ba63f1d1b5f18fc (patch) | |
tree | f8a7f10e55640c2e97a552cf76dc0b380393c214 /activemodel/lib/active_model | |
parent | a39ee473128f3d33538f7b6cd5edf1d000f5d80e (diff) | |
parent | 3508da50f02b11290245976f2dbaeef6cd794e83 (diff) | |
download | rails-3e776496d0a85942b65935e69ba63f1d1b5f18fc.tar.gz rails-3e776496d0a85942b65935e69ba63f1d1b5f18fc.tar.bz2 rails-3e776496d0a85942b65935e69ba63f1d1b5f18fc.zip |
Merge pull request #5364 from carlosantoniodasilva/active-model-serialization-include
Active model serialization :include returning string keys
Diffstat (limited to 'activemodel/lib/active_model')
-rw-r--r-- | activemodel/lib/active_model/serialization.rb | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/activemodel/lib/active_model/serialization.rb b/activemodel/lib/active_model/serialization.rb index 51f078e662..4323ee1e09 100644 --- a/activemodel/lib/active_model/serialization.rb +++ b/activemodel/lib/active_model/serialization.rb @@ -1,7 +1,5 @@ require 'active_support/core_ext/hash/except' require 'active_support/core_ext/hash/slice' -require 'active_support/core_ext/array/wrap' - module ActiveModel # == Active Model Serialization @@ -11,7 +9,6 @@ module ActiveModel # A minimal implementation could be: # # class Person - # # include ActiveModel::Serialization # # attr_accessor :name @@ -19,7 +16,6 @@ module ActiveModel # def attributes # {'name' => nil} # end - # # end # # Which would provide you with: @@ -43,7 +39,6 @@ module ActiveModel # So a minimal implementation including XML and JSON would be: # # class Person - # # include ActiveModel::Serializers::JSON # include ActiveModel::Serializers::Xml # @@ -52,7 +47,6 @@ module ActiveModel # def attributes # {'name' => nil} # end - # # end # # Which would provide you with: @@ -88,7 +82,7 @@ module ActiveModel method_names.each { |n| hash[n.to_s] = send(n) } serializable_add_includes(options) do |association, records, opts| - hash[association] = if records.is_a?(Enumerable) + hash[association.to_s] = if records.is_a?(Enumerable) records.map { |a| a.serializable_hash(opts) } else records.serializable_hash(opts) @@ -126,13 +120,13 @@ module ActiveModel # +records+ - the association record(s) to be serialized # +opts+ - options for the association records def serializable_add_includes(options = {}) #:nodoc: - return unless include = options[:include] + return unless includes = options[:include] - unless include.is_a?(Hash) - include = Hash[Array.wrap(include).map { |n| n.is_a?(Hash) ? n.to_a.first : [n, {}] }] + unless includes.is_a?(Hash) + includes = Hash[Array(includes).map { |n| n.is_a?(Hash) ? n.to_a.first : [n, {}] }] end - include.each do |association, opts| + includes.each do |association, opts| if records = send(association) yield association, records, opts end |