From 7ba05c02e3f62f027818945a46006ab24a799139 Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Fri, 23 Aug 2013 21:35:00 -0300 Subject: [PATCH] Make Serializable module which implements as_json --- lib/active_model/array_serializer.rb | 13 +++---------- lib/active_model/serializable.rb | 13 +++++++++++++ lib/active_model/serializer.rb | 13 +++---------- 3 files changed, 19 insertions(+), 20 deletions(-) create mode 100644 lib/active_model/serializable.rb diff --git a/lib/active_model/array_serializer.rb b/lib/active_model/array_serializer.rb index 2ff339b5..cc2fc4c9 100644 --- a/lib/active_model/array_serializer.rb +++ b/lib/active_model/array_serializer.rb @@ -1,7 +1,10 @@ +require 'active_model/serializable' require 'active_model/serializer' module ActiveModel class ArraySerializer + include Serializable + class << self attr_accessor :_root @@ -31,15 +34,5 @@ module ActiveModel end end alias serializable_object serializable_array - - def as_json(options={}) - if root = options[:root] || self.root - hash = { root.to_s => serializable_array } - hash[meta_key.to_s] = meta if meta - hash - else - serializable_array - end - end end end diff --git a/lib/active_model/serializable.rb b/lib/active_model/serializable.rb new file mode 100644 index 00000000..944cb0aa --- /dev/null +++ b/lib/active_model/serializable.rb @@ -0,0 +1,13 @@ +module ActiveModel + module Serializable + def as_json(options={}) + if root = options[:root] || self.root + hash = { root.to_s => serializable_object } + hash[meta_key.to_s] = meta if meta + hash + else + serializable_object + end + end + end +end diff --git a/lib/active_model/serializer.rb b/lib/active_model/serializer.rb index b2b852cc..82f3643a 100644 --- a/lib/active_model/serializer.rb +++ b/lib/active_model/serializer.rb @@ -1,8 +1,11 @@ require 'active_model/array_serializer' +require 'active_model/serializable' require 'active_model/serializer/associations' module ActiveModel class Serializer + include Serializable + class << self def inherited(base) base._attributes = [] @@ -120,15 +123,5 @@ module ActiveModel hash.merge! associations end alias serializable_object serializable_hash - - def as_json(options={}) - if root = options[:root] || self.root - hash = { root.to_s => serializable_hash } - hash[meta_key.to_s] = meta if meta - hash - else - serializable_hash - end - end end end