如何在布线级别验证 Rails 中的静态参数?

Thi*_*Lam 5 routes ruby-on-rails-3

我目前有以下宁静的网址:

/questions/2011/05/
Run Code Online (Sandbox Code Playgroud)

我的提问路线是:

match 'questions/:year/:month/' => 'Questions#month'
Run Code Online (Sandbox Code Playgroud)

如何在路线级别验证上述年份和月份参数,以便:

  1. 年和月是整数
  2. 最短/最长一年长度 = 4
  3. 最小/最大月份长度 = 2

在 django 中,我可以使用以下行执行上述操作:

url(r'^questions/(?P<year>\d{4})/(?P<month>\d{2})/$', 'questions.views.month'),
Run Code Online (Sandbox Code Playgroud)

我正在浏览 Rails 指南并进行谷歌搜索,但在路由级别找不到相应的功能。上述内容是在控制器级别完成的吗?

Gaz*_*ler 4

您正在寻找匹配方法选项哈希的约束选项。

match 'questions/:year/:month/' => 'questions#month', :constraints => {:year => /\d{4}/, :month => /\d{2}/}
Run Code Online (Sandbox Code Playgroud)

指南| APIDock 文档