只是想知道,我们已经使用默认配置进行部署,该配置将3个url片段上的回形针附件的ID分开,例如000/000/02。
我们想知道的是,当它在999/999/999到1000000000条记录之间发生时会发生什么,它是否只是添加了另一个网址片段,例如001/000/000/000?
或者,有什么事情真的发生了吗?
答案 0 :(得分:4)
我的猜测是你会遇到问题。我尽最大努力跟踪产生这种情况的来源,这使我得以采用这种方法:
由于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图像的样式和文件名相同,那么我想会发生碰撞。有可能在回形针的某处有逻辑来检查并绕过它,但是我没有看到任何(通过粗略的)粗略的旅程通过代码。