如果我有ID 1的Post模型,
我可以通过
访问此资源 http://localhost:3000/posts/1
但是,当我使用这些URL时,我会得到相同的结果。
http://localhost:3000/posts/1somethingweird-blah-blah-blah-idont-like-this
我该如何防止这种情况?
答案 0 :(得分:3)
这很可能是因为params[:id]
正在从String
转换为int
而在Ruby中调用"1somethingweird-blah-blah-blah-idont-like-this".to_i
实际上会导致1
。
您可以在路线级别修复此问题:
resources :posts, :constraints => {:id => /[0-9]+/}
答案 1 :(得分:1)
两个主要选项:
它起作用的原因是因为"1abc".to_i == 1
。