Вопрос

я использую friendly_id Для моих маршрутов в приложении моего Rails.

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

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

Страница не должна быть такой доступной - 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»?

Это хороший способ делать что -то? Вы можете увидеть какие -либо подводные камни?

Это было полезно?

Решение

Я бы использовал before_filter Прежде чем засунуть его в каждом методе.

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

Другие советы

Похоже, вы просто хотите иметь имена пользователей в качестве постоянной ссылки сразу после корня '/' ...

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top