Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

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

  • Loading branch information...
commit fe01ae69d23219dd60001f8c46afa2372fcb7ccd 1 parent ab7db5a
Harold Giménez authored
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")
Please sign in to comment.
Something went wrong with that request. Please try again.