Commit ac822448 by Dimitrij Denissenko

Fixed ID partitioning interpolation, when cloning attachments

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