我的应用程序中有一条如下所示的路线:
match '/:id' => 'controller#action', :constraints => { :id => VALID_IDS }
其中 VALID_IDS 是一个正则表达式白名单,例如
/(good_id|another_good_id|a_valid_id)/
现在看来,uri
/good_id_one
不匹配这个约束,即使
1.9.2p318 :004 > "good_id_one".match /^(good_id|another_good_id|a_valid_id)/
=> #<MatchData "good_id" 1:"good_id">
这是为什么?我有一个怀疑。本指南说
:constraints 采用正则表达式,但不能使用正则表达式锚。但是,请注意,您不需要使用锚点,因为所有路线都在开始时锚定。
rails 在正则表达式的末尾添加一个锚也是这种情况吗?这可以解释我所看到的,因为
1.9.2p318 :006 > "good_id_one".match /^(good_id|another_good_id|a_valid_id)$/
=> nil
但是,我不确定这种怀疑是否正确。谁能证实或否认我的假设?
(ps, Rails 3.0.11, Ruby 1.9.2
)