Sha256: 354ab43a5f3e0aee4b6ed62ee6d056404e9288e0f5533344d45d95c7137334ef
Contents?: true
Size: 1016 Bytes
Versions: 1
Compression:
Stored size: 1016 Bytes
Contents
# frozen_string_literal: true require 'active_record' require 'active_serialize/version' require 'active_serialize/class_methods' module ActiveSerialize extend ActiveSupport::Concern cattr_accessor :configs, default: { } class_methods do def active_serialize rmv: [ ], add: [ ], recursive: [ ] extend ClassMethods include ToH delegate :active_serialize_keys, :_active_serialize, to: self active_serialize_rmv *rmv active_serialize_add *add active_serialize_add *recursive, recursive: true end end module ToH def to_h(rmv: [ ], add: [ ], merge: { }) tran_key = ->(key) { (_active_serialize[:map][key] || key).to_s } recursion = _active_serialize[:recursive].map { |key| [ tran_key.(key), public_send(key)&.to_ha ] }.to_h active_serialize_keys(rmv: rmv, add: add) .map{ |key| [ tran_key.(key), public_send(key) ] }.to_h .merge(merge).merge(recursion) end end end ActiveRecord::Base.include ActiveSerialize
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
active_serialize-2.0.0 | lib/active_serialize.rb |