我正在使用这个to_param
def to_param
[id, [first_name.parameterize,last_name.parameterize].join("_")].join("-")
end
生成一个看起来像
的地址http://www.example.com/users/34-joe_smith
但如果我将地址更改为
http://www.example.com/users/34-joe_notsmith
它仍指向身份为34的用户。
如何强制执行404页面或root_path?
答案 0 :(得分:0)
由于您的搜索是针对id而不是用户的名称执行的,因此它不会真正关心url中id的成功值。您可以扩展您的show动作以根据ID,名字和姓氏查找用户,但我认为这不会成为一个非常干净的解决方案。
相反,我强烈建议您查看Friendly_ID gem,这样您就可以轻松地使用非pk字段(例如用户名)生成漂亮的URL。关于这个主题有一个很好的轨道广播:pretty urls with friendlyid