Class: MongoidExt::FileList
Instance Attribute Summary collapse
Instance Method Summary
collapse
field, #id, #initialize
Constructor Details
This class inherits a constructor from EmbeddedHash
Instance Attribute Details
#parent_document ⇒ Object
Returns the value of attribute parent_document.
3
4
5
|
# File 'lib/mongoid_ext/file_list.rb', line 3
def parent_document
@parent_document
end
|
Instance Method Details
#delete(id) ⇒ Object
62
63
64
65
66
|
# File 'lib/mongoid_ext/file_list.rb', line 62
def delete(id)
file = self.get(id)
super(id)
file.delete
end
|
#destroy_files ⇒ Object
68
69
70
71
72
|
# File 'lib/mongoid_ext/file_list.rb', line 68
def destroy_files
each_file do |id, file|
get(id).delete
end
end
|
#each_file(&block) ⇒ Object
28
29
30
31
32
33
|
# File 'lib/mongoid_ext/file_list.rb', line 28
def each_file(&block)
(self.keys-["_id"]).each do |key|
file = self.get(key)
yield key, file
end
end
|
#files ⇒ Object
22
23
24
25
26
|
# File 'lib/mongoid_ext/file_list.rb', line 22
def files
ids = self.keys
ids.delete("_id")
ids.map {|v| get(v) }
end
|
#get(id) ⇒ Object
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
# File 'lib/mongoid_ext/file_list.rb', line 35
def get(id)
if id.kind_of?(MongoidExt::File)
self[id.id] = id
return id
end
id = id.to_s.gsub(".", "_")
file = self[id]
if file.nil?
file = self[id] = MongoidExt::File.new
elsif file.class == BSON::OrderedHash
file = self[id] = MongoidExt::File.new(file)
end
file._root_document = parent_document
file
end
|
#put(id, io, metadata = {}) ⇒ Object
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
# File 'lib/mongoid_ext/file_list.rb', line 5
def put(id, io, metadata = {})
if !parent_document.new_record?
filename = id
if io.respond_to?(:original_filename)
filename = io.original_filename
elsif io.respond_to?(:path) && io.path
filename = ::File.basename(io.path)
elsif io.kind_of?(String)
io = StringIO.new(io)
end
get(id).put(filename, io, metadata)
else
(@_pending_files ||= {})[id] = [io, metadata]
end
end
|
#sync_files ⇒ Object
53
54
55
56
57
58
59
60
|
# File 'lib/mongoid_ext/file_list.rb', line 53
def sync_files
if @_pending_files
@_pending_files.each do |filename, data|
put(filename, data[0], data[1])
end
@_pending_files = nil
end
end
|