Module: Ooor::Serialization
Instance Method Summary collapse
- #serializable_hash(options = nil) ⇒ Object
- #serialize_many2one(included_associations) ⇒ Object
- #serialize_x_to_many(included_associations) ⇒ Object
Instance Method Details
#serializable_hash(options = nil) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/ooor/serialization.rb', line 15 def serializable_hash( = nil) ||= {} hash = super() attribute_names = attributes.keys.sort included_associations = {} serialize_many2one(included_associations) serialize_x_to_many(included_associations) method_names = Array.wrap([:methods]).map { |n| n if respond_to?(n.to_s) }.compact Hash[(attribute_names + method_names).map { |n| [n, send(n)] }].merge(included_associations) end |
#serialize_many2one(included_associations) ⇒ Object
28 29 30 31 32 33 34 35 36 |
# File 'lib/ooor/serialization.rb', line 28 def serialize_many2one(included_associations) self.class.many2one_associations.keys.each do |k| if loaded_associations[k].is_a? Base included_associations[k] = loaded_associations[k].as_json[loaded_associations[k].class.openerp_model.gsub('.', '_')] elsif associations[k].is_a? Array included_associations[k] = {"id" => associations[k][0], "name" => associations[k][1]} end end end |
#serialize_x_to_many(included_associations) ⇒ Object
38 39 40 41 42 43 44 45 46 |
# File 'lib/ooor/serialization.rb', line 38 def serialize_x_to_many(included_associations) (self.class.one2many_associations.keys + self.class.many2many_associations.keys).each do |k| if loaded_associations[k].is_a? Array included_associations[k] = loaded_associations[k].map {|item| item.as_json[item.class.openerp_model.gsub('.', '_')]} else included_associations[k] = associations[k].map {|id| {"id" => id}} if associations[k] end end end |