Commit fe01ae69 by Harold Giménez

Handle interpolation of string IDs (supports mongo) as well as integers

parent ab7db5a5
...@@ -143,7 +143,11 @@ module Paperclip ...@@ -143,7 +143,11 @@ 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
("%09d" % attachment.instance.id).scan(/\d{3}/).join("/") if (id = attachment.instance.id).is_a?(Integer)
("%09d" % id).scan(/\d{3}/).join("/")
else
id.scan(/.{3}/).first(3).join("/")
end
end end
# Returns the pluralized form of the attachment name. e.g. # Returns the pluralized form of the attachment name. e.g.
......
...@@ -88,13 +88,20 @@ class InterpolationsTest < Test::Unit::TestCase ...@@ -88,13 +88,20 @@ 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 the partitioned id of the attachment" 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)
attachment.expects(:instance).returns(attachment) attachment.expects(:instance).returns(attachment)
assert_equal "000/000/023", Paperclip::Interpolations.id_partition(attachment, :style) assert_equal "000/000/023", Paperclip::Interpolations.id_partition(attachment, :style)
end end
should "return the partitioned id of the attachment when the id is a string" do
attachment = mock
attachment.expects(:id).returns("32fnj23oio2f")
attachment.expects(:instance).returns(attachment)
assert_equal "32f/nj2/3oi", 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