Sha256: 7950562f07d8336ce1045ebda53e886e6b1598927d5878261577e81fd7bb1534
Contents?: true
Size: 1.47 KB
Versions: 2
Compression:
Stored size: 1.47 KB
Contents
require File.join(File.dirname(__FILE__), '..', 'mixins', 'properties') module CouchRest module CastedModel def self.included(base) base.send(:include, CouchRest::Callbacks) base.send(:include, CouchRest::Mixins::Properties) base.send(:attr_accessor, :casted_by) base.send(:attr_accessor, :document_saved) end def initialize(keys={}) raise StandardError unless self.is_a? Hash apply_defaults # defined in CouchRest::Mixins::Properties super() keys.each do |k,v| self[k.to_s] = v end if keys cast_keys # defined in CouchRest::Mixins::Properties end def []= key, value super(key.to_s, value) end def [] key super(key.to_s) end # Gets a reference to the top level extended # document that a model is saved inside of def base_doc return nil unless @casted_by @casted_by.base_doc end # False if the casted model has already # been saved in the containing document def new? !@document_saved end alias :new_record? :new? # Sets the attributes from a hash def update_attributes_without_saving(hash) hash.each do |k, v| raise NoMethodError, "#{k}= method not available, use property :#{k}" unless self.respond_to?("#{k}=") end hash.each do |k, v| self.send("#{k}=",v) end end alias :attributes= :update_attributes_without_saving end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
sporkd-couchrest-0.30 | lib/couchrest/more/casted_model.rb |
sporkd-couchrest-0.31 | lib/couchrest/more/casted_model.rb |