Sha256: 2bf9385f55d8803037016f70d866924b9d94e0a91bb1946559f786ab4563b2f3
Contents?: true
Size: 959 Bytes
Versions: 7
Compression:
Stored size: 959 Bytes
Contents
module Yoda module Store module Objects module Serializable module ClassMethods def json_creatable? true end # @param params [Hash] def json_create(params) new(params.reject { |k, _v| k.to_sym == :json_class }.map { |k, v| [k.to_sym, v] }.to_h) end end def self.included(klass) klass.extend(ClassMethods) end # @abstract # @return [Hash] def to_h fail NotImplementedError end # @return [String] def to_json(*options) to_h.merge(json_class: self.class.name).to_json end # Create a new instance which has the original parameters and overrided parameters. # @param params [Hash{Symbol => Object}] parameters to override def derive(params = {}) self.class.new(to_h.merge(params)) end end end end end
Version data entries
7 entries across 7 versions & 1 rubygems