Commit ac822448 by Dimitrij Denissenko

Fixed ID partitioning interpolation, when cloning attachments

parent 989ec0ee
......@@ -150,10 +150,13 @@ module Paperclip
# Returns the id of the instance in a split path form. e.g. returns
# 000/001/234 for an id of 1234.
def id_partition attachment, style_name
if (id = attachment.instance.id).is_a?(Integer)
case id = attachment.instance.id
when Integer
("%09d" % id).scan(/\d{3}/).join("/")
else
when String
id.scan(/.{3}/).first(3).join("/")
else
nil
end
end
......
......@@ -88,6 +88,13 @@ class InterpolationsTest < Test::Unit::TestCase
assert_equal 23, Paperclip::Interpolations.id(attachment, :style)
end
should "return nil for attachments to new records" do
attachment = mock
attachment.expects(:id).returns(nil)
attachment.expects(:instance).returns(attachment)
assert_nil Paperclip::Interpolations.id(attachment, :style)
end
should "return the partitioned id of the attachment when the id is an integer" do
attachment = mock
attachment.expects(:id).returns(23)
......@@ -102,6 +109,13 @@ class InterpolationsTest < Test::Unit::TestCase
assert_equal "32f/nj2/3oi", Paperclip::Interpolations.id_partition(attachment, :style)
end
should "return nil for the partitioned id of an attachment to a new record (when the id is nil)" do
attachment = mock
attachment.expects(:id).returns(nil)
attachment.expects(:instance).returns(attachment)
assert_nil Paperclip::Interpolations.id_partition(attachment, :style)
end
should "return the name of the attachment" do
attachment = mock
attachment.expects(:name).returns("file")
......
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