确定字符串是否仅包含数字

时间:2012-01-10 12:00:26

标签: ruby-on-rails ruby-on-rails-3 friendly-id

我在我的rails应用中使用friendly_id作为我的路线。

我想确保数字ID无法访问某个页面。

可以像这样访问页面 - www.myurl.com/myfriendlyidstub

页面不应该像这样访问 - www.myurl.com/12345(12345是myfriendlyidstub的id)

我无法在friendly_id的文档中看到这样做的方法。

所以我正在考虑在我的控制器中添加一个方法来检查param是否为数字

def edit
    if params[:id].is_numeric? #I need to know how to write this method
        not_found #not_found redirects to a 404
    end 
    #rest of the edit action
end

两个问题 -

如何编写'is_numeric'方法?

这是一种很好的做事方式吗?你能看到任何陷阱吗?

2 个答案:

答案 0 :(得分:4)

在将其粘贴到每种方法之前,我会使用before_filter

您还可以配置路由segment constraint

答案 1 :(得分:0)

听起来你只想将用户名作为固定链接在根目录'/'...后面。

config/route.rb
...
match '/:id' => 'controller#show'
...

之后我相信如果你正确设置了它,它应该显示为名称而不是id。

顺便说一句,感谢找到friendly_id,我即将开始为我的项目寻找类似的东西。

如果有帮助,请告诉我。