Sha256: d5debd42c6f9b2ebe6a3c3b840234c37626ccc98d1033bb248c9644f5ba68bde
Contents?: true
Size: 1.33 KB
Versions: 18
Compression:
Stored size: 1.33 KB
Contents
Dir[File.dirname(__FILE__) + '/concerns/record/*.rb'].each { |file| require file } class LHS::Record include All include Batch include Chainable include Configuration include Create include Destroy include Endpoints include Equality include Find include FindBy include First include Inspect include Mapping include Model include Pagination include Request include Scope delegate :_proxy, :_endpoint, :merge_raw!, :select, to: :_data def initialize(data = nil) data = LHS::Data.new({}, nil, self.class) unless data data = LHS::Data.new(data, nil, self.class) unless data.is_a?(LHS::Data) define_singleton_method(:_data) { data } apply_custom_setters! end def as_json(options = nil) _data.as_json(options) end def self.build(data = nil) new(data) end protected def method_missing(name, *args, &block) _data.send(name, *args, &block) end def respond_to_missing?(name, include_all = false) _data.respond_to_missing?(name, include_all) end private def apply_custom_setters! return if !_data.item? || !_data._raw.respond_to?(:keys) raw = _data._raw custom_setters = raw.keys.find_all { |key| public_methods.include?("#{key}=".to_sym) } custom_setters.each do |setter| value = raw.delete(setter) send("#{setter}=", value) end end end
Version data entries
18 entries across 18 versions & 1 rubygems