Module: CouchRest::Model::ExtendedAttachments

Included in:
Base
Defined in:
lib/couchrest/model/extended_attachments.rb

Instance Method Summary collapse

Instance Method Details

#attachment_uri(attachment_name) ⇒ Object

returns URI to fetch the attachment from



53
54
55
56
# File 'lib/couchrest/model/extended_attachments.rb', line 53

def attachment_uri(attachment_name)
  return unless has_attachment?(attachment_name)
  "#{database.uri}/#{self.id}/#{attachment_name}"
end

#attachment_url(attachment_name) ⇒ Object

returns URL to fetch the attachment from



47
48
49
50
# File 'lib/couchrest/model/extended_attachments.rb', line 47

def attachment_url(attachment_name)
  return unless has_attachment?(attachment_name)
  "#{database.root}/#{self.id}/#{attachment_name}"
end

#attachmentsObject

return all attachments



16
17
18
# File 'lib/couchrest/model/extended_attachments.rb', line 16

def attachments
  self['_attachments'] ||= {}
end

#create_attachment(args = {}) ⇒ Object

Add a file attachment to the current document. Expects :file and :name to be included in the arguments.



7
8
9
10
11
12
13
# File 'lib/couchrest/model/extended_attachments.rb', line 7

def create_attachment(args={})
  raise ArgumentError unless args[:file] && args[:name]
  return if has_attachment?(args[:name])
  set_attachment_attr(args)
rescue ArgumentError => e
  raise ArgumentError, 'You must specify :file and :name'
end

#delete_attachment(attachment_name) ⇒ Object

deletes a file attachment from the current doc



36
37
38
39
# File 'lib/couchrest/model/extended_attachments.rb', line 36

def delete_attachment(attachment_name)
  return unless attachments
  attachments.delete attachment_name
end

#has_attachment?(attachment_name) ⇒ Boolean

returns true if attachment_name exists

Returns:

  • (Boolean)


42
43
44
# File 'lib/couchrest/model/extended_attachments.rb', line 42

def has_attachment?(attachment_name)
  !!(attachments && attachments[attachment_name] && !attachments[attachment_name].empty?)
end

#read_attachment(attachment_name) ⇒ Object

reads the data from an attachment



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

def read_attachment(attachment_name)
  database.fetch_attachment(self, attachment_name)
end

#update_attachment(args = {}) ⇒ Object

modifies a file attachment on the current doc



26
27
28
29
30
31
32
33
# File 'lib/couchrest/model/extended_attachments.rb', line 26

def update_attachment(args={})
  raise ArgumentError unless args[:file] && args[:name]
  return unless has_attachment?(args[:name])
  delete_attachment(args[:name])
  set_attachment_attr(args)
rescue ArgumentError => e
  raise ArgumentError, 'You must specify :file and :name'
end