Вот как я думаю об этих 7 действиях RESTful Controller . Взять, к примеру, ресурс Person. Соответствующий PeopleController будет содержать следующие действия:
index : список групп людей (возможно, с некоторыми дополнительными условиями).
show : загрузить одного ранее созданного персонажа с целью просмотра . Соответствующее представление обычно доступно только для чтения.
new : настройка или создание нового экземпляра Person. Он еще не был сохранен, просто настройка. Соответствующее представление обычно представляет собой некоторый тип формы, в которой пользователь может вводить значения атрибутов для этого нового человека. Когда эта форма отправляется, Rails отправляет ее в действие «create».
create : Сохранить человека, который был настроен, с помощью действия "new".
edit : Получить ранее созданного персонажа с намерением изменить его атрибуты . Изменения не были сделаны или представлены еще. Соответствующее представление обычно представляет собой форму, которую Rails отправит в действие «update».
update : Сохранить изменения, сделанные при редактировании ранее созданного персонажа.
уничтожить : Ну, как вы уже догадались, уничтожьте или удалите ранее созданного персонажа.
Конечно, есть некоторые споры относительно того, являются ли эти 7 действий достаточными для всех контроллеров, но по моему опыту они имеют тенденцию делать работу за немногими исключениями. Добавление других действий обычно является признаком необходимости дополнительного типа ресурса.
Например, скажем, у вас есть приложение по подбору персонала, полное кадровых ресурсов, которые вы просто хотите нанять. Чтобы выполнить это, у вас может возникнуть соблазн создать действие «найма» (т.е. / people / 456 / hire). Однако более подход RESTful вместо этого будет рассматривать это как «создание» ресурса занятости. Примерно так:
class Person < ActiveRecord::Base
has_many :employments
has_many :employers, :class_name => 'Company', :through => :employments, :source => :company
end
class Employement < ActiveRecord::Base
belongs_to :person
belongs_to :company
end
class Company < ActiveRecord::Base
has_many :employments
has_many :employees, :class_name => 'Person', :through => :employments, :source => :person
end
Затем будет использовано действие create EmploymentsController.
Хорошо, это становится длинным. Не бойтесь устанавливать множество различных ресурсов (и вы, вероятно, не будете использовать все 7 действий контроллера для каждого из них). В конечном итоге это окупается и помогает вам придерживаться этих 7 основных действий RESTful.