diff options
author | José Valim <jose.valim@gmail.com> | 2011-09-22 14:24:39 -0700 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2011-09-22 14:24:39 -0700 |
commit | c19c55582bf46541d0ae095ea70b65cf18aff775 (patch) | |
tree | c7914648baa0417a45013cb5e253c6dc5756909d /activemodel/lib | |
parent | 9d46823b5d00e78c6ffaaae731a9a7acf6bb2b14 (diff) | |
parent | 6e78bbea90f744fb7de3bc93752d1519503a370d (diff) | |
download | rails-c19c55582bf46541d0ae095ea70b65cf18aff775.tar.gz rails-c19c55582bf46541d0ae095ea70b65cf18aff775.tar.bz2 rails-c19c55582bf46541d0ae095ea70b65cf18aff775.zip |
Merge pull request #3106 from mattetti/master
ActiveModel JSON serialization bug fix
Diffstat (limited to 'activemodel/lib')
-rw-r--r-- | activemodel/lib/active_model/serializers/json.rb | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/activemodel/lib/active_model/serializers/json.rb b/activemodel/lib/active_model/serializers/json.rb index 4fbccd7419..3c713311fd 100644 --- a/activemodel/lib/active_model/serializers/json.rb +++ b/activemodel/lib/active_model/serializers/json.rb @@ -88,19 +88,17 @@ module ActiveModel # "title": "So I was thinking"}]} def as_json(options = nil) - hash = serializable_hash(options) - - include_root = include_root_in_json - if options.try(:key?, :root) - include_root = options[:root] - end - - if include_root - custom_root = options && options[:root] - hash = { custom_root || self.class.model_name.element => hash } + opts_root = options[:root] if options.try(:key?, :root) + if opts_root + custom_root = opts_root == true ? self.class.model_name.element : opts_root + { custom_root => serializable_hash(options) } + elsif opts_root == false + serializable_hash(options) + elsif include_root_in_json + { self.class.model_name.element => serializable_hash(options) } + else + serializable_hash(options) end - - hash end def from_json(json, include_root=include_root_in_json) |