Я портирую большое приложение PHP на Rails, и у нас довольно мало «специальных» ресурсов, таких как администраторы имеют возможность войти в систему как другой пользователь с их разрешения, чтобы исправить проблемы и т. Д. Явсегда будет жаловаться, что такие функции, как вход в систему под учетной записью других пользователей, не следует объединять в огромные монолитные AdminController
как действия loginAsUser
и logOutOfUserAccount
.В нашем приложении Rails мы стараемся визуализировать как можно больше с точки зрения ресурсов, поэтому, используя только что приведенный пример, у нас есть пространство имен Admin, в котором есть UsersController
(/ admin / users /: id) икак подресурс пользователей, у нас есть ресурс UserOverride
(/ admin / users /: user_id / override) ... действительно логично, что мы просто POST и DELETE к этому ресурсу.
Возвращаясь к вашему примеру, да, я думаю, вы должны разбить эти разделы на отдельные ресурсы.Похоже, что BookContent должен быть подресурсом Book, а также MarketingOptions.
resources :books do
resource :content
resources :marketing_options
end
и т. Д.
С этим работать удобнее (более модульно) и проще визуализировать.от просмотра только маршрутов.Вы также получаете преимущество действительно предсказуемых помощников пути:
<%= link_to("Marketing Options", book_marketing_options_path(@book)) %>
Вы не можете пытаться принудить каждый мыслимый маршрут в идеологию ресурса RESTful ... если кажется, что он принудительный, то, вероятно,.
Есть достойное сообщение в блоге, на которое я хотел бы сослаться (несмотря на некоторую плохую грамматику), на самом деле довольно неплохо показывает вам, как думать о вашем приложении с точки зрения ресурсов ... Я не могунайди это хотя.Я добавлю комментарий, если / когда я сделаю.
РЕДАКТИРОВАТЬ |Просто перечитал исходный вопрос и хотел уточнить: ресурс! = Строка в базе данных.Ресурс - это все, что вы можете представить как «вещь» ... Я знаю, что это очень широкое утверждение, но точно так же, как объект в ООП не должен представлять что-то конкретное / материал, равно как и ресурс в RESTful-дизайне.