public
Description: DataMapper port of the Paperclip plugin by Thoughtbot
Homepage: http://invalidlogic.com/dm-paperclip/
Clone URL: git://github.com/krobertson/dm-paperclip.git
Added direct support for the Merb Mash type
krobertson (author)
Thu May 15 23:33:10 -0700 2008
commit  60342476ed09a9b20e858c39087ed854f1020508
tree    4308e877f5aee48a32ad2d591b468c3c8c3d3306
parent  0908d720ec9a89403acabad324ba469b1321d639
...
57
58
59
60
61
62
63
64
 
 
 
 
 
 
 
 
 
 
 
 
 
65
66
67
...
181
182
183
184
 
 
 
 
 
 
185
186
187
...
57
58
59
 
 
 
 
 
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
...
189
190
191
 
192
193
194
195
196
197
198
199
200
0
@@ -57,11 +57,19 @@ module Paperclip
0
 
0
       return nil if uploaded_file.nil?
0
 
0
- @queued_for_write[:original] = uploaded_file.to_tempfile
0
- newvals = { :"#{@name}_file_name" => uploaded_file.original_filename,
0
- :"#{@name}_content_type" => uploaded_file.content_type,
0
- :"#{@name}_file_size" => uploaded_file.size }
0
- @instance.update_attributes(newvals)
0
+ if uploaded_file.is_a?(Mash)
0
+ @queued_for_write[:original] = uploaded_file['tempfile']
0
+ newvals = { :"#{@name}_file_name" => uploaded_file['filename'],
0
+ :"#{@name}_content_type" => uploaded_file['content_type'],
0
+ :"#{@name}_file_size" => uploaded_file['size'] }
0
+ @instance.update_attributes(newvals)
0
+ else
0
+ @queued_for_write[:original] = uploaded_file.to_tempfile
0
+ newvals = { :"#{@name}_file_name" => uploaded_file.original_filename,
0
+ :"#{@name}_content_type" => uploaded_file.content_type,
0
+ :"#{@name}_file_size" => uploaded_file.size }
0
+ @instance.update_attributes(newvals)
0
+ end
0
 
0
       @dirty = true
0
 
0
@@ -181,7 +189,12 @@ module Paperclip
0
     end
0
 
0
     def valid_assignment? file #:nodoc:
0
- file.nil? || (file.respond_to?(:original_filename) && file.respond_to?(:content_type))
0
+ return true if file.nil?
0
+ if(file.is_a?(File))
0
+ (file.respond_to?(:original_filename) && file.respond_to?(:content_type))
0
+ elsif(file.is_a?(Mash))
0
+ (file.include?('tempfile') && file.include?('content_type') && file.include?('size') && file.include?('filename'))
0
+ end
0
     end
0
 
0
     def validate #:nodoc:
...
36
37
38
 
 
 
 
 
39
40
41
...
36
37
38
39
40
41
42
43
44
45
46
0
@@ -36,6 +36,11 @@ ENV['RAILS_ENV'] ||= 'test'
0
 FIXTURES_DIR = File.join(File.dirname(__FILE__), "fixtures")
0
 DataMapper.setup(:default, 'sqlite3::memory:')
0
 
0
+unless defined?(Mash)
0
+ class Mash < Hash
0
+ end
0
+end
0
+
0
 def rebuild_model options = {}
0
   DataMapper::Migration.new( 1, :drop_dummies_table ) do
0
     up do

Comments

    No one has commented yet.