gpt4 book ai didi

ruby-on-rails-3 - 如何使继承的资源可选嵌套为单例?

转载 作者:行者123 更新时间:2023-12-04 07:22:14 24 4
gpt4 key购买 nike

我正在使用 inherited_resources 来 DRY 我的 Controller ,但无法弄清楚如何使特定 Controller 正常运行。在我的模型中,User has_one Person。我希望它可以选择性地嵌套,嵌套时表现为单例,不嵌套时表现为非单例。换句话说,我希望能够列出所有已知的人 (/people),获取第 5 个人 (/person/5),并获取用户 10 的唯一个人 (/user/10/person)。 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

... 那么非嵌套的/people urls 工作,但嵌套的/users/:user_id/person urls 不工作: undefined method 'people' 如果相反,在 PeopleController ,我使用:

belongs_to :user, :optional => true, :singleton => true

... 那么嵌套的/users/:user_id/person urls 工作,但非嵌套的/people urls 不工作,因为它被视为单例,即使在非嵌套时也是如此: undefined 方法“人”

总结:有没有办法让 inherited_resources 在通过嵌套路由访问时将资源作为单例处理,而在通过非嵌套路由访问时作为非单例处理?

最佳答案

如果有人试图做类似的事情,我最终只是放弃了 inherited_resources。我发现我的 Controller 中发生的“魔法”越少,我就越开心。

关于ruby-on-rails-3 - 如何使继承的资源可选嵌套为单例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9696125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com