33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
# File 'lib/has-attached.rb', line 33
def has_attached(name, options = {})
options[:url] ||= "/attachments/:class/:id/:attachment/:style/:basename.:extension"
options[:path] ||= ":rails_root/public/attachments/:class/:id/:attachment/:style/:basename.:extension"
@all_styles ||= (YAML.load_file(Rails.root.join("config", "styles.yml")) rescue {"styles" => {}})["styles"]
options[:styles] = @all_styles.fetch(self.name.underscore, {}).fetch(name.to_s, {}).symbolize_keys
if Rails.env.production? && Rails.application.config.respond_to?(:upload_attachments_to_s3) && Rails.application.config.upload_attachments_to_s3
options[:storage] = 's3'
options[:s3_credentials] = Rails.root.join("config", "s3.yml")
options[:path] = "/attachments/:class/:id/:attachment/:style/:basename.:extension"
options[:url] = ":s3_domain_url"
else
options[:storage] = 'filesystem'
end
has_attached_file(name, options)
field :"#{name}_file_name"
field :"#{name}_content_type"
field :"#{name}_file_size", :as => :integer
field :"#{name}_updated_at", :as => :datetime
validate do |record|
if record.send(name) && !record.send(name).errors.empty?
file_name = record.send(:"#{name}_file_name")
record.errors.add name, "Paperclip returned errors for file '#{file_name}' - check ImageMagick installation or image source file."
false
end
end
end
|