Как сделать унаследованный ресурс, необязательный вложенный как синглтон?

StackOverflow https://stackoverflow.com//questions/9696125

Вопрос

Я использую унаследованные_респорты, чтобы высушить мою контроллер, но не может понять, как сделать конкретный контроллер правильно. В моей модели генеракодицетагкод. Я хочу, чтобы это было необязательно вложено, ведут себя как синглтон, когда вложенный, а как неинтеретенна, когда не вложенный. Другими словами, я хочу иметь возможность перечислять всех известных людей (/ людей), получить человека № 5 (/ лицу / 5) и получить единственный человек пользователя 10 (/ User / 10 / человек). Следующее в маршрутах .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-адреса, но вложенные / пользователям /: URL user_id / rufets не: User has_one Person, если, вместо этого, в peoplecontroller, я использую:

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

... Тогда вложенные / пользователи /: USER_ID / INFER URL-адреса работают, но не вложенные / люди URL-адреса не связаны с тем, потому что он рассматривается как синглтон, даже когда не вложенный: undefined method 'people'

Резюме: Есть ли способ сделать унаследование_Resources обрабатывать ресурс в качестве синглтона при доступе через вложенный маршрут, но в качестве неинтефона при доступе через не вложенный маршрут?

Это было полезно?

Решение

В случае, если кто-то пытается сделать что-то подобное, я закончил просто отказаться от унаследованных_ореспортов.Я нахожу, что я счастлив с меньшей «магией», происходящим в моем контроллерах.

Другие советы

Это, очевидно, не поддерживается: https://github.com/josevalim/ruited_resources/issues/169

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top