Как решить, какое действие использовать - PullRequest
0 голосов
/ 15 января 2012

Я очень новичок в веб-разработке (я чувствую, что все мои посты в последнее время начинали именно так) и со временем становлюсь менее знакомым с рельсами.Я нахожусь в состоянии, когда я могу выполнить значительное количество вещей, необходимых для моей работы, но есть одна неприятная проблема, с которой я постоянно сталкиваюсь:

Как мне решить, какое действие я должен использовать для данной задачи?index, show, new, edit, create, update или destroy?

уничтожить довольно очевидно, и я могу свободно разделить остальное на два сегмента с индексом/ показать в одном и новый / редактировать / создать в другом.Но как мне решить, какой из них использовать, или мне следует создать свой собственный?

Некоторые общие рекомендации или ссылки для дальнейшего чтения будут очень полезными для меня.

Ответы [ 2 ]

7 голосов
/ 15 января 2012

Вот как я думаю об этих 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.

1 голос
/ 15 января 2012

Вы можете называть свои действия как хотите. Как правило, согласно соглашению с Rails, index является значением по умолчанию, show показывает один элемент, list показывает много, new и edit начинает редактирование нового или старого элемента, а create и update сохранит их соответственно. destroy убьет предмет, как вы уже догадались. Но все это всего лишь условные обозначения: вы можете назвать свое действие yellowtail, если это то, что вы хотите сделать.

...