глубоко вложенные ресурсы RESTful в Rails - PullRequest
4 голосов
/ 19 декабря 2008

У меня есть такая структура в моем приложении:

USER has_one: publicprofile,: privateprofile

PUBLICPROFILE имеет много: электронные письма,: номера телефонов

PRIVATEPROFILE имеет много: адреса, кредитные карты

Я хотел бы знать, как получить страницу профиля для пользователя, где я могу обновить его вложенные ресурсы (и сделать это RESTful способом). Я не смог найти никаких документов / примеров по этому вопросу (из-за этого запутанного отношения has_one).

Ответы [ 3 ]

4 голосов
/ 23 декабря 2008

Я полагаю, что любое вложение глубже 1-го уровня, как правило, осуждается и его обычно можно избежать. Jamis Buck писал об этом некоторое время назад.

Скринкаст PeepCode REST для Rails 2 тоже довольно хорош, но он не затрагивает в основном вложения, только ресурсы в целом.

4 голосов
/ 07 января 2009

В своем файле rout.rb вы можете добавить свои профили в качестве вложенных ресурсов для пользователей, используя блок:

map.resources :users do |user|
  user.resources :privateprofile
  user.resources :publicprofile
end

Затем вы можете получить доступ к своему профилю, используя URL-адрес примерно так:

users/1/publicprofiles
users/1/publicprofiles/new
users/1/publicprofiles/1/edit

Вы можете запускать рейк-маршруты в своем терминале, чтобы получить список всех вложенных URL-адресов, доступных вам после обновления файла маршрутов.

Для действительно глубокого объяснения см. Этот пост: http://adam.blog.heroku.com/past/2007/12/20/nested_resources_in_rails_2/

2 голосов
/ 23 декабря 2008

Я рекомендую вам посмотреть этот скринкаст: http://railscasts.com/episodes/139-nested-resources

Это определенно помогло мне понять, что действительно возможно, используя вложенные маршруты и ресурсы в Rails (особенно новые изменения в Rails 2.2).

Однако мне придется согласиться с Райаном Бейтсом здесь, используйте вложенные ресурсы осторожно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...