определить, содержит ли строка только цифры - PullRequest
2 голосов
/ 10 января 2012

Я использую friendly_id для своих маршрутов в приложении rails.

Я хочу убедиться, что страница не может быть посещена числовым идентификатором.

Страница доступна вот так - www.myurl.com/myfriendlyidstub

Страница не должна быть доступна вот так - www.myurl.com/12345 (12345 - это идентификатор myfriendlyidstub)

Я не вижу способа сделать это в документах friendly_id.

Так что я рассматриваю возможность добавления метода в моем контроллере, чтобы проверить, является ли параметр числовым

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 ]

4 голосов
/ 10 января 2012

Я бы использовал before_filter, прежде чем вставлять его в каждый метод.

Вы также можете настроить маршрутизацию ограничение сегмента .

0 голосов
/ 10 января 2012

Звучит так, будто вы хотите, чтобы имена пользователей оставались в качестве постоянной ссылки сразу после корня.

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

После этого я считаю, что если вы правильно настроите Friendly, он должен отображаться как имя, а не как идентификатор

Кстати, спасибо, что нашли friendly_id, я собирался начать искать что-то подобное для моего проекта.

Дайте мне знать, если это поможет.

...