# File lib/couchrest/mixins/properties.rb, line 20 def apply_defaults return unless self.respond_to?(:new_document?) && new_document? return unless self.class.respond_to?(:properties) return if self.class.properties.empty? # TODO: cache the default object self.class.properties.each do |property| key = property.name.to_s # let's make sure we have a default and we can assign the value if property.default && (self.respond_to?("#{key}=") || self.key?(key)) if property.default.class == Proc self[key] = property.default.call else self[key] = Marshal.load(Marshal.dump(property.default)) end end end end