假設(shè)我們在/config/routes.rb中有如下定義
resources :users
resource :user
那么我們在測試中使用user_url會產(chǎn)生如下錯誤

這是Ruby on Rails的一個bug,而這個bug歷時7年仍未解決,詳見如下資料
- Singular and Plural Rails Routes for the Same Resource
- link_to / form_for doesn't work for singular resource · Issue #1769 · rails/rails · GitHub
有如下兩種workaround:
第一種workaround是改變單數(shù)和復數(shù)resource定義的順序,即先定義單數(shù)resource,后定義復數(shù)resource。如下
resource :user
resources :users
這樣一來,我們就可以在測試中使用user_url了。
第二種workaround是給單數(shù)resource起一個別名。如下
resources :users
resource :user, as: :current_user
在測試中,我們可以使用current_user_url來代替user_url。