Sha256: 1ae466e15bae1135b090c1fac56526c5869a5580947dafbbeb9c1dd48c3ef68d
Contents?: true
Size: 1.38 KB
Versions: 3
Compression:
Stored size: 1.38 KB
Contents
class MLS::Resource attr_reader :errors, :persisted def self.inherited(subclass) subclass.extend(MLS::Model) end def initialize(attributes = {}, persisted = false) @persisted = persisted @errors = {} set_default_values update_attributes(attributes) end def new_record? !@persisted end def persisted? @persisted end def save new_record? ? create! : update! end # Properties =================================================================================================== def properties self.class.properties end def set_default_values properties.each do |name, property| self.send("#{name}=".to_sym, property.default) if property.default end end def update_attributes(attrs) attrs.each { |k, v| self.send("#{k}=".to_sym, v) } end # Combo Breaker ================================================================================================ def to_hash hash = {} properties.each do |name, property| serialize = property.options[:serialize] || :always case serialize when :always hash[name] = property.dump(self.send(name)) when :if_present hash[name] = property.dump(self.send(name)) if self.send(name) end end hash end #== for rails form stuff def to_key persisted? ? [id] : nil end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
mls-0.2.2 | lib/mls/resource.rb |
mls-0.2.1 | lib/mls/resource.rb |
mls-0.2.0 | lib/mls/resource.rb |