Browse files

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

  • Loading branch information...
1 parent ab7db5a commit fe01ae69d23219dd60001f8c46afa2372fcb7ccd Harold Gim��nez committed Jul 9, 2010
Showing with 13 additions and 2 deletions.
  1. +5 −1 lib/paperclip/interpolations.rb
  2. +8 −1 test/interpolations_test.rb
View
6 lib/paperclip/interpolations.rb
@@ -143,7 +143,11 @@ def hash attachment, style_name
# 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
- ("%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
# Returns the pluralized form of the attachment name. e.g.
View
9 test/interpolations_test.rb
@@ -88,13 +88,20 @@ class InterpolationsTest < Test::Unit::TestCase
assert_equal 23, Paperclip::Interpolations.id(attachment, :style)
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.expects(:id).returns(23)
attachment.expects(:instance).returns(attachment)
assert_equal "000/000/023", Paperclip::Interpolations.id_partition(attachment, :style)
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
attachment = mock
attachment.expects(:name).returns("file")

0 comments on commit fe01ae6

Please sign in to comment.