Module Sequel::Plugins::JsonSerializer::DatasetMethods
In: lib/sequel/plugins/json_serializer.rb

Methods

to_json  

Public Instance methods

Return a JSON string representing an array of all objects in this dataset. Takes the same options as the instance method, and passes them to every instance. Additionally, respects the following options:

:array :An array of instances. If this is not provided, calls all on the receiver to get the array.
:instance_block :A block to pass to to_json for each value in the dataset (or :array option).
:root :If set to :collection, wraps the collection in a root object using the pluralized, underscored model name as the key. If set to :instance, only wraps the instances in a root object. If set to :both, wraps both the collection and instances in a root object. If set to a string, wraps the collection in a root object using the string as the key.

[Source]

     # File lib/sequel/plugins/json_serializer.rb, line 388
388:         def to_json(*a)
389:           if opts = a.first.is_a?(Hash)
390:             opts = model.json_serializer_opts.merge(a.first)
391:             a = []
392:           else
393:             opts = model.json_serializer_opts
394:           end
395: 
396:           case collection_root = opts[:root]
397:           when nil, false, :instance
398:             collection_root = false
399:           else
400:             opts = opts.dup
401:             unless collection_root == :both
402:               opts.delete(:root)
403:             end
404:             unless collection_root.is_a?(String)
405:               collection_root = model.send(:pluralize, model.send(:underscore, model.send(:demodulize, model.to_s)))
406:             end
407:           end
408: 
409:           res = if row_proc 
410:             array = if opts[:array]
411:               opts = opts.dup
412:               opts.delete(:array)
413:             else
414:               all
415:             end
416:             array.map{|obj| Literal.new(Sequel.object_to_json(obj, opts, &opts[:instance_block]))}
417:            else
418:             all
419:           end
420: 
421:           res = {collection_root => res} if collection_root
422:           res = yield res if block_given?
423: 
424:           Sequel.object_to_json(res, *a)
425:         end

[Validate]