Commit ff6e8485 by Jon Yurek

Moved to send instead of [], so no columns specifically required, only methods.

parent f301de52
...@@ -182,7 +182,7 @@ module Paperclip ...@@ -182,7 +182,7 @@ module Paperclip
options[:in] = (0..options[:less_than]) options[:in] = (0..options[:less_than])
end end
if attachment.file? && !options[:in].include?(instance[:"#{name}_file_size"].to_i) if attachment.file? && !options[:in].include?(attachment.instance_read(:file_size).to_i)
min = options[:in].first min = options[:in].first
max = options[:in].last max = options[:in].last
...@@ -223,7 +223,7 @@ module Paperclip ...@@ -223,7 +223,7 @@ module Paperclip
unless attachment.original_filename.blank? unless attachment.original_filename.blank?
unless options[:content_type].blank? unless options[:content_type].blank?
content_type = instance[:"#{name}_content_type"] content_type = attachment.instance_read(:content_type)
unless valid_types.any?{|t| t === content_type } unless valid_types.any?{|t| t === content_type }
options[:message] || "is not one of the allowed file types." options[:message] || "is not one of the allowed file types."
end end
......
...@@ -56,7 +56,7 @@ module Paperclip ...@@ -56,7 +56,7 @@ module Paperclip
def assign uploaded_file def assign uploaded_file
%w(file_name).each do |field| %w(file_name).each do |field|
unless @instance.class.column_names.include?("#{name}_#{field}") unless @instance.class.column_names.include?("#{name}_#{field}")
raise PaperclipError.new("#{self} model does not have required column '#{name}_#{field}'") raise PaperclipError.new("#{@instance.class} model does not have required column '#{name}_#{field}'")
end end
end end
...@@ -75,17 +75,17 @@ module Paperclip ...@@ -75,17 +75,17 @@ module Paperclip
logger.info("[paperclip] Writing attributes for #{name}") logger.info("[paperclip] Writing attributes for #{name}")
@queued_for_write[:original] = uploaded_file.to_tempfile @queued_for_write[:original] = uploaded_file.to_tempfile
@instance[:"#{@name}_file_name"] = uploaded_file.original_filename.strip.gsub /[^\w\d\.\-]+/, '_' instance_write(:file_name, uploaded_file.original_filename.strip.gsub(/[^\w\d\.\-]+/, '_'))
@instance[:"#{@name}_content_type"] = uploaded_file.content_type.strip instance_write(:content_type, uploaded_file.content_type.strip)
@instance[:"#{@name}_file_size"] = uploaded_file.size.to_i instance_write(:file_size, uploaded_file.size.to_i)
@instance[:"#{@name}_updated_at"] = Time.now instance_write(:updated_at, Time.now)
@dirty = true @dirty = true
post_process post_process
# Reset the file size if the original file was reprocessed. # Reset the file size if the original file was reprocessed.
@instance[:"#{@name}_file_size"] = uploaded_file.size.to_i instance_write(:file_size, uploaded_file.size.to_i)
ensure ensure
validate validate
end end
...@@ -148,11 +148,11 @@ module Paperclip ...@@ -148,11 +148,11 @@ module Paperclip
# Returns the name of the file as originally assigned, and as lives in the # Returns the name of the file as originally assigned, and as lives in the
# <attachment>_file_name attribute of the model. # <attachment>_file_name attribute of the model.
def original_filename def original_filename
instance[:"#{name}_file_name"] instance_read(:file_name)
end end
def updated_at def updated_at
time = instance[:"#{name}_updated_at"] time = instance_read(:updated_at)
time && time.to_i time && time.to_i
end end
...@@ -209,6 +209,14 @@ module Paperclip ...@@ -209,6 +209,14 @@ module Paperclip
!original_filename.blank? !original_filename.blank?
end end
def instance_write(attr, value)
instance.send(:"#{name}_#{attr}=", value)
end
def instance_read(attr)
instance.send(:"#{name}_#{attr}")
end
private private
def logger def logger
...@@ -280,10 +288,10 @@ module Paperclip ...@@ -280,10 +288,10 @@ module Paperclip
@queued_for_delete += [:original, *@styles.keys].uniq.map do |style| @queued_for_delete += [:original, *@styles.keys].uniq.map do |style|
path(style) if exists?(style) path(style) if exists?(style)
end.compact end.compact
@instance[:"#{@name}_file_name"] = nil instance_write(:file_name, nil)
@instance[:"#{@name}_content_type"] = nil instance_write(:content_type, nil)
@instance[:"#{@name}_file_size"] = nil instance_write(:file_size, nil)
@instance[:"#{@name}_updated_at"] = nil instance_write(:updated_at, nil)
end end
def flush_errors #:nodoc: def flush_errors #:nodoc:
......
...@@ -232,12 +232,12 @@ class AttachmentTest < Test::Unit::TestCase ...@@ -232,12 +232,12 @@ class AttachmentTest < Test::Unit::TestCase
context "with a file assigned in the database" do context "with a file assigned in the database" do
setup do setup do
@instance.stubs(:[]).with(:avatar_file_name).returns("5k.png") @attachment.stubs(:instance_read).with(:file_name).returns("5k.png")
@instance.stubs(:[]).with(:avatar_content_type).returns("image/png") @attachment.stubs(:instance_read).with(:content_type).returns("image/png")
@instance.stubs(:[]).with(:avatar_file_size).returns(12345) @attachment.stubs(:instance_read).with(:file_size).returns(12345)
now = Time.now now = Time.now
Time.stubs(:now).returns(now) Time.stubs(:now).returns(now)
@instance.stubs(:[]).with(:avatar_updated_at).returns(Time.now) @attachment.stubs(:instance_read).with(:updated_at).returns(Time.now)
end end
should "return a correct url even if the file does not exist" do should "return a correct url even if the file does not exist" do
...@@ -251,7 +251,7 @@ class AttachmentTest < Test::Unit::TestCase ...@@ -251,7 +251,7 @@ class AttachmentTest < Test::Unit::TestCase
context "with the updated_at field removed" do context "with the updated_at field removed" do
setup do setup do
@instance.stubs(:[]).with(:avatar_updated_at).returns(nil) @attachment.stubs(:instance_read).with(:updated_at).returns(nil)
end end
should "only return the url without the updated_at when sent #url" do should "only return the url without the updated_at when sent #url" do
...@@ -264,7 +264,7 @@ class AttachmentTest < Test::Unit::TestCase ...@@ -264,7 +264,7 @@ class AttachmentTest < Test::Unit::TestCase
end end
should "return the proper path when filename has multiple .'s" do should "return the proper path when filename has multiple .'s" do
@instance.stubs(:[]).with(:avatar_file_name).returns("5k.old.png") @attachment.stubs(:instance_read).with(:file_name).returns("5k.old.png")
assert_equal "./test/../tmp/avatars/dummies/original/#{@instance.id}/5k.old.png", @attachment.path assert_equal "./test/../tmp/avatars/dummies/original/#{@instance.id}/5k.old.png", @attachment.path
end end
...@@ -331,10 +331,10 @@ class AttachmentTest < Test::Unit::TestCase ...@@ -331,10 +331,10 @@ class AttachmentTest < Test::Unit::TestCase
@existing_names = @attachment.styles.keys.collect do |style| @existing_names = @attachment.styles.keys.collect do |style|
@attachment.path(style) @attachment.path(style)
end end
@instance.expects(:[]=).with(:avatar_file_name, nil) @attachment.expects(:instance_write).with(:file_name, nil)
@instance.expects(:[]=).with(:avatar_content_type, nil) @attachment.expects(:instance_write).with(:content_type, nil)
@instance.expects(:[]=).with(:avatar_file_size, nil) @attachment.expects(:instance_write).with(:file_size, nil)
@instance.expects(:[]=).with(:avatar_updated_at, nil) @attachment.expects(:instance_write).with(:updated_at, nil)
@attachment.assign nil @attachment.assign nil
@attachment.save @attachment.save
end end
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment