7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/joint/class_methods.rb', line 7
def attachment(name, options = {})
options.symbolize_keys!
name = name.to_sym
self.attachment_names = attachment_names.dup.add(name)
after_save :save_attachments
before_save :nullify_nil_attachments_attributes
after_save :destroy_nil_attachments
before_destroy :destroy_all_attachments
key :"#{name}_id", ObjectId
key :"#{name}_name", String
key :"#{name}_size", Integer
key :"#{name}_type", String
validates_presence_of(name) if options[:required]
attachment_accessor_module.module_eval " def \#{name}\n @\#{name} ||= AttachmentProxy.new(self, :\#{name})\n end\n\n def \#{name}?\n !nil_attachments.has_key?(:\#{name}) && send(:\#{name}_id?)\n end\n\n def \#{name}=(file)\n if file.nil?\n nil_attachments[:\#{name}] = send(\"\#{name}_id\")\n assigned_attachments.delete(:\#{name})\n else\n send(\"\#{name}_id=\", BSON::ObjectId.new) if send(\"\#{name}_id\").nil?\n send(\"\#{name}_name=\", Joint.name(file))\n send(\"\#{name}_size=\", Joint.size(file))\n send(\"\#{name}_type=\", Joint.type(file))\n assigned_attachments[:\#{name}] = file\n nil_attachments.delete(:\#{name})\n end\n end\n EOC\nend\n"
|