Опитвам се да стана по-добър с Rails и ресурси за влагане. Потребителят има много събития (и обратно) чрез таблицата за присъединяване на UserEvent. Също така искам потребител да коментира събитие. Досега събитието е вложено под потребител в моите ресурси. Как бихте вложили коментар? Това ще бъде ли вложено под Събитие, така че да има два последователно вложени ресурса под Потребител? Как ще работи това?
Ресурси за влагане на потребителски коментар за събитие
Отговори (1)
Мисля, че това би бил предложеният от мен вложен подход:
resources :users
resources :events do
resources :comments
end
При връзка много към много обикновено няма смисъл да се влагат един под друг, защото нито един от тях няма по-силна ограничаваща връзка.
Във вашия сценарий потребителят не принадлежи на едно събитие и събитието не принадлежи на един потребител, така че това, че вашите маршрути го представят по този начин, не моделира напълно връзката. Вашите URL адреси ще изглеждат като /events/1/users/2
. Това означава, че потребител 2 съществува само в събитие 1.
Мисля, че би имало смисъл вашите User
и Event
да са ресурси от най-високо ниво. Comments
, от друга страна, имат някаква собственост, която има смисъл да се влага. Повече от вероятно Comment
ще бъде свързано с Event
по отношение на контекста. User
е просто лицето, отговорно за това. Влагането на коментари под потребителя ще ви даде лесни URL адреси за показване на всички коментари за даден потребител, но се обзалагам, че е по-вероятно да покажете всички коментари за Event
. Имайки това предвид, бих предложил да вложите Comments
под Events
.
Това също има смисъл, ако трябва да изтриете потребителя и nullify
user_id
в модела Comment
. Все още можете да имате URL адрес за коментара. Ако изтриете Event
, коментарите вероятно вече не са полезни, така че можете просто да ги унищожите.
:users
маршрутите, за да включват: get 'comments', on: :member
, за да ви дадат URL за извличане на всички коментари, които даден потребител притежава.
- person Marc Baumbach; 17.01.2014