diff options
Diffstat (limited to 'activemodel/lib/active_model/serializers/json.rb')
-rw-r--r-- | activemodel/lib/active_model/serializers/json.rb | 36 |
1 files changed, 17 insertions, 19 deletions
diff --git a/activemodel/lib/active_model/serializers/json.rb b/activemodel/lib/active_model/serializers/json.rb index e1dbc522de..0bfbf2aa06 100644 --- a/activemodel/lib/active_model/serializers/json.rb +++ b/activemodel/lib/active_model/serializers/json.rb @@ -18,17 +18,17 @@ module ActiveModel # Returns a JSON string representing the model. Some configuration can be # passed through +options+. # - # The option <tt>ActiveModel::Base.include_root_in_json</tt> controls the - # top-level behavior of +to_json+. If true (the default) +to_json+ will - # emit a single root node named after the object's type. For example: + # The option <tt>include_root_in_json</tt> controls the top-level behavior + # of +as_json+. If true (the default) +as_json+ will emit a single root + # node named after the object's type. For example: # # konata = User.find(1) - # konata.to_json + # konata.as_json # # => { "user": {"id": 1, "name": "Konata Izumi", "age": 16, # "created_at": "2006/08/01", "awesome": true} } # # ActiveRecord::Base.include_root_in_json = false - # konata.to_json + # konata.as_json # # => {"id": 1, "name": "Konata Izumi", "age": 16, # "created_at": "2006/08/01", "awesome": true} # @@ -39,29 +39,29 @@ module ActiveModel # attributes. For example: # # konata = User.find(1) - # konata.to_json + # konata.as_json # # => {"id": 1, "name": "Konata Izumi", "age": 16, # "created_at": "2006/08/01", "awesome": true} # # The <tt>:only</tt> and <tt>:except</tt> options can be used to limit the attributes # included, and work similar to the +attributes+ method. For example: # - # konata.to_json(:only => [ :id, :name ]) + # konata.as_json(:only => [ :id, :name ]) # # => {"id": 1, "name": "Konata Izumi"} # - # konata.to_json(:except => [ :id, :created_at, :age ]) + # konata.as_json(:except => [ :id, :created_at, :age ]) # # => {"name": "Konata Izumi", "awesome": true} # # To include the result of some method calls on the model use <tt>:methods</tt>: # - # konata.to_json(:methods => :permalink) + # konata.as_json(:methods => :permalink) # # => {"id": 1, "name": "Konata Izumi", "age": 16, # "created_at": "2006/08/01", "awesome": true, # "permalink": "1-konata-izumi"} # # To include associations use <tt>:include</tt>: # - # konata.to_json(:include => :posts) + # konata.as_json(:include => :posts) # # => {"id": 1, "name": "Konata Izumi", "age": 16, # "created_at": "2006/08/01", "awesome": true, # "posts": [{"id": 1, "author_id": 1, "title": "Welcome to the weblog"}, @@ -69,7 +69,7 @@ module ActiveModel # # Second level and higher order associations work as well: # - # konata.to_json(:include => { :posts => { + # konata.as_json(:include => { :posts => { # :include => { :comments => { # :only => :body } }, # :only => :title } }) @@ -79,18 +79,16 @@ module ActiveModel # "title": "Welcome to the weblog"}, # {"comments": [{"body": "Don't think too hard"}], # "title": "So I was thinking"}]} - def encode_json(encoder) - hash = serializable_hash(encoder.options) + + def as_json(options = nil) + hash = serializable_hash(options) + if include_root_in_json - custom_root = encoder.options && encoder.options[:root] + custom_root = options && options[:root] hash = { custom_root || self.class.model_name.element => hash } end - ActiveSupport::JSON.encode(hash) - end - - def as_json(options = nil) - self + hash end def from_json(json) |