Проблема с обработкой объекта в контроллерах проверяемых объектов заключается в том, что вы обнаружите, что повторяете много одинакового кода на каждом из контроллеров. Кроме того, где вы положили код? Либо вы столкнетесь с какими-то серьезными тяжелыми методами действий (с помощью своих 7 существующих действий), либо начнете создавать такие действия, как
new_review, delete_review, etc
, который не является RESTful и представляет собой серьезный запах кода, требующий собственного контроллера.
Поэтому, для чего-то подобного я хотел бы рассмотреть наличие контроллера обзора и либо добавить параметры в URL, либо использовать скрытые поля, чтобы указать, к какому объекту принадлежит обзор:
<%= f.hidden_field :reviewable_id, :value => @object.id %>
<%= f.hidden_field :reviewable_type, :value => @object.class %>
Это особенно полезно, если необходимо выполнить какую-либо другую работу с объектом обзора (например, сохранить текущего пользователя как автора и т. Д.), Поскольку он сохраняет всю логику, которую нельзя вытолкнуть к модели в одном месте. Просто убедитесь, что правильно сопоставили связанную модель и убедитесь, что она принадлежит пользователю, в противном случае пользователи могут изменять URL-адрес и добавлять обзоры по своему желанию (конечно, это применимо к любому выбору объекта из предоставленных пользователем данных).
Однако, если объект обзора очень легкий и не требует какой-либо дополнительной обработки (т. Е. Просто присваивает публикуемые данные объекту), вы можете взглянуть на использование Rails 2.3, и это поддержка вложенных объектов .