使用000/000/001样式的默认回形针URL结构,当我们达到999/999/999时会发生什么?

时间:2013-12-28 05:41:56

标签: ruby-on-rails paperclip

只是想知道,我们已经使用默认配置进行部署,该配置将3个url片段上的回形针附件的ID分开,例如000/000/02。

我们想知道的是,当它在999/999/999到1000000000条记录之间发生时会发生什么,它是否只是添加了另一个网址片段,例如001/000/000/000?

或者,有什么事情真的发生了吗?

1 个答案:

答案 0 :(得分:4)

我的猜测是你会遇到问题。我尽最大努力跟踪产生这种情况的来源,这使我得以采用这种方法:

https://github.com/thoughtbot/paperclip/blob/282f1161e8cbdd314e06af51d7ad01feb8b5c196/lib/paperclip/interpolations.rb#L162

由于id是一个整数,因此将使用:

进行处理

("%09d" % id).scan(/\d{3}/).join("/")

我对pry的摆弄表明,为第十亿项生成的URL将与第一亿项相同。嗯。

[1] pry(main)> id = 999_999_999
=> 999999999
[2] pry(main)> ("%09d" % id).scan(/\d{3}/).join("/")
=> "999/999/999"
[3] pry(main)> id = 1_000_000_000
=> 1000000000
[4] pry(main)> play -i 2      # (runs expression #2 again)
=> "100/000/000"
[5] pry(main)> id = 100_000_000
=> 100000000
[6] pry(main)> play -i 2
=> "100/000/000"

由于默认网址为:rails_root/public/system/:class/:attachment/:id_partition/:style/:filename,如果1​​,000,000,000和100,000,000图像的样式和文件名相同,那么我想会发生碰撞。有可能在回形针的某处有逻辑来检查并绕过它,但是我没有看到任何(通过粗略的)粗略的旅程通过代码。