Sha256: fd4d7041657183456911e4c570395f854055385a921766f95f3a7b8e878b5620
Contents?: true
Size: 933 Bytes
Versions: 2
Compression:
Stored size: 933 Bytes
Contents
module MotionResource class Base class_inheritable_array :attributes class << self def attribute(*fields) attr_reader *fields fields.each do |field| define_method "#{field}=" do |value| if value.is_a?(Hash) || value.is_a?(Array) instance_variable_set("@#{field}", value.dup) else instance_variable_set("@#{field}", value) end end end self.attributes += fields end end def update_attributes(params = {}) attributes = self.methods - Object.methods params.each do |key, value| if attributes.member?((key.to_s + "=:").to_sym) self.send((key.to_s + "=:").to_sym, value) end end end def attributes self.class.attributes.inject({}) do |hash, attr| hash[attr] = send(attr) hash end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
motion-resource-0.0.2 | lib/motion-resource/attributes.rb |
motion-resource-0.0.1 | lib/motion-resource/attributes.rb |