シングルトンとしてネストした継承されたリソースを作成するにはどうすればよいですか。
-
13-12-2019 - |
質問
inherited_resourcesを使用してコントローラを乾かしますが、特定のコントローラを正しく振る舞う方法を理解できません。私のモデルでは、User has_one Person
。ネストしたときにシングルトンとして、そしてネストされていないときは、シングルトンとして揺れています。言い換えれば、私はすべての既知の人々(/人)をリストし、人物#5(/ person / 5)を取得し、ユーザー10の唯一の人(/ユーザー/ 10 /人)を取得することができるようにしたいです。 Routes.rb:
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は機能しますが、入れ子/ users /:user_id / personのURLは、undefined method 'people'
を使用します。
belongs_to :user, :optional => true, :singleton => true
.
... NESTED / users /:user_id / personのURLは機能しますが、ネストされていない/人のURLは、ネストしない場合でもシングルトンとして扱われているためです。
概要:ネストされたルートを介してアクセスされたときは、inherited_resourcesをシングルトンとしてリソースを処理する方法はありますが、ネストされていないルートを介してアクセスされていない場合は非シングルトンとしては?
解決
誰かが似たようなことをしようとしている場合、私は継承されたものを放棄するだけで終わった。私は私のコントローラの中で起こっている「魔法」が少ないので、私は幸せになると思っています。
他のヒント
明らかにサポートされていない: https://github.com/josevalim/inherited_resources/issues/169