Sha256: 46dbb871a143c91c2dd781986e173d5933e271a31adc9baf5886c459c8edc5fb
Contents?: true
Size: 1.09 KB
Versions: 1
Compression:
Stored size: 1.09 KB
Contents
module JsonApiClient module Attributes extend ActiveSupport::Concern included do attr_reader :attributes initialize do |obj, params| obj.attributes = params end end def attributes=(attrs = {}) @attributes ||= {}.with_indifferent_access @attributes.merge!(attrs) end def update_attributes(attrs = {}) self.attributes = attrs save end def method_missing(method, *args, &block) if match = method.to_s.match(/^(.*)=$/) set_attribute(match[1], args.first) elsif has_attribute?(method) attributes[method] else nil end end def persisted? attributes.has_key?(primary_key) end def query_params attributes.except(primary_key) end def to_param attributes.fetch(primary_key, "").to_s end protected def read_attribute(name) attributes.fetch(name, nil) end def set_attribute(name, value) attributes[name] = value end def has_attribute?(attr_name) attributes.has_key?(attr_name) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
json_api_client-0.0.3 | lib/json_api_client/attributes.rb |