Module: CouchRest::CastedModel

Defined in:
lib/couchrest/casted_model.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



4
5
6
7
8
9
# File 'lib/couchrest/casted_model.rb', line 4

def self.included(base)
  base.send(:include, ::CouchRest::Mixins::Callbacks)
  base.send(:include, ::CouchRest::Mixins::Properties)
  base.send(:attr_accessor, :casted_by)
  base.send(:attr_accessor, :document_saved)
end

Instance Method Details

#[](key) ⇒ Object



25
26
27
# File 'lib/couchrest/casted_model.rb', line 25

def [] key
  super(key.to_s)
end

#[]=(key, value) ⇒ Object



21
22
23
# File 'lib/couchrest/casted_model.rb', line 21

def []= key, value
  super(key.to_s, value)
end

#base_docObject

Gets a reference to the top level extended document that a model is saved inside of



31
32
33
34
# File 'lib/couchrest/casted_model.rb', line 31

def base_doc
  return nil unless @casted_by
  @casted_by.base_doc
end

#initialize(keys = {}) ⇒ Object

Raises:

  • (StandardError)


11
12
13
14
15
16
17
18
19
# File 'lib/couchrest/casted_model.rb', line 11

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

#new?Boolean Also known as: new_record?

False if the casted model has already been saved in the containing document

Returns:

  • (Boolean)


38
39
40
# File 'lib/couchrest/casted_model.rb', line 38

def new?
  !@document_saved
end

#update_attributes_without_saving(hash) ⇒ Object Also known as: attributes=

Sets the attributes from a hash



44
45
46
47
48
49
50
51
# File 'lib/couchrest/casted_model.rb', line 44

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