アプリに次のようなルートがあります。
match '/:id' => 'controller#action', :constraints => { :id => VALID_IDS }
VALID_IDS は次のような正規表現ホワイトリストです
/(good_id|another_good_id|a_valid_id)/
今では、ウリのようです
/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
)