Как мне проверить параметры restful в rails на уровне маршрутизации?

#ruby-on-rails-3 #routes

#ruby-on-rails-3 #маршруты

Вопрос:

В настоящее время у меня есть следующий restful URL:

 /questions/2011/05/
  

Мой маршрут для вопросов таков:

 match 'questions/:year/:month/' => 'Questions#month'
  

Как я могу проверить вышеуказанные параметры года и месяца на уровне маршрута, чтобы:

  1. год и месяц являются целыми числами
  2. минимальная / максимальная продолжительность года = 4
  3. минимальная / максимальная продолжительность месяца = 2

В django я могу сделать вышеуказанное со следующей строкой:

 url(r'^questions/(?P<year>d{4})/(?P<month>d{2})/$', 'questions.views.month'),
  

Я просматриваю руководство по rails и гуглю, но не могу найти соответствующую функциональность на уровне маршрутизации. Подразумевается ли вышесказанное на уровне контроллера?

Ответ №1:

Вы ищете параметр constraints для хэша параметров метода сопоставления.

 match 'questions/:year/:month/' => 'questions#month', :constraints => {:year => /d{4}/, :month => /d{2}/}
  

Руководство | Документация APIDock