私はコントローラをDRYするためにinherited_resourcesを使用していますが、特定のコントローラを正しく動作させる方法を理解することはできません。私のモデルでは、User has_one Person
。私はそれが任意にネストされ、ネストされたときにはシングルトンとして、ネストされていないときには非シングルトンとして振舞いたい。言い換えれば、すべての既知の人々(/人)を一覧表示し、人#5(/人/ 5)を取得し、ユーザー10の唯一の人(/ユーザー/ 10 /人)を取得できるようにします。 routes.rbをして、次の:私は期待どおりinherited_resourceをオプションでシングルトンとしてネストする方法を教えてください。
resources :users
resource :person
end
resources :people
...ルートを設定しています
user_person POST /users/:user_id/person(.:format) people#create
new_user_person GET /users/:user_id/person/new(.:format) people#new
edit_user_person GET /users/:user_id/person/edit(.:format) people#edit
GET /users/:user_id/person(.:format) people#show
PUT /users/:user_id/person(.:format) people#update
DELETE /users/:user_id/person(.:format) people#destroy
people GET /people(.:format) people#index
POST /people(.:format) people#create
new_person GET /people/new(.:format) people#new
edit_person GET /people/:id/edit(.:format) people#edit
person GET /people/:id(.:format) people#show
PUT /people/:id(.:format) people#update
DELETE /people/:id(.:format) people#destroy
...とても素晴らしいです。さて、PeopleControllerであれば、私が使用:
belongs_to :user, :optional => true
...その後、URLが働く非ネストされた/人が、ネストされた/ユーザー/:USER_ID /人のURLにはない:
undefined method 'people'
代わりに、もし、 PeopleControllerに、私が使用します。
belongs_to :user, :optional => true, :singleton => true
...その後、ネストされた/ユーザー/:USER_ID /人は仕事をするURLが、それはシングルトンとして扱われているので、ネストされていない/人のURLにはありません、ノンネストされている場合でも:undefined method 'person'
要約:inherited_resourcesにresoを処理させる方法はありますかネストされたルートを介してアクセスされたときにシングルトンとしての欲求が、ネストされていないルートを介してアクセスされた場合は非シングルトンとして