aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel/lib
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2011-09-22 14:24:39 -0700
committerJosé Valim <jose.valim@gmail.com>2011-09-22 14:24:39 -0700
commitc19c55582bf46541d0ae095ea70b65cf18aff775 (patch)
treec7914648baa0417a45013cb5e253c6dc5756909d /activemodel/lib
parent9d46823b5d00e78c6ffaaae731a9a7acf6bb2b14 (diff)
parent6e78bbea90f744fb7de3bc93752d1519503a370d (diff)
downloadrails-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.rb22
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)