Неправильно ли не реализовывать все действия REST в контроллере Rails?
-
16-09-2019 - |
Вопрос
Допустим, у меня есть SessionsController
, который управляет входом пользователя в систему и выходом из системы, но единственные действия, которые мне действительно нужны, это новое (для отображения формы входа в систему), Создать (для аутентификации и входа в систему) и уничтожить для выхода пользователя из системы.
Есть ли какая-либо проблема, если у меня просто есть эти три действия в моем контроллере, или я должен реализовать их все, чтобы сделать его корректным RESTful?
И второй маленький вопрос.Некоторые люди говорят , что строительные леса это плохо, и что нужно писать код вручную, но я нахожу это довольно полезным и экономящим время.
Нормально ли использовать строительные леса, или это зло, которого следует избегать, и почему?
Решение
Определенно, нормально создавать только те действия RESTful, которые вы хотите поддерживать для этого ресурса.Вам не обязательно определять все 7 действий.На самом деле, большинство моих контроллеров не используют все 7 действий.
Нормально ли использовать строительные леса, или это зло, которого следует избегать, и почему?
Встроенные направляющие строительные леса в основном предназначены для того, чтобы помочь оторваться от земли при начале работ.Лично я не использую его для повседневной разработки по нескольким причинам.
- он генерирует CSS и файл макета, когда я хочу использовать существующее приложение
- он генерирует все действия контроллера (как я уже сказал, мне обычно не нужны все из них).
- он создает формат XML для каждого действия, которое мне почти никогда не нужно
- это не переводит форму в частичное состояние, когда мне нужны как "редактировать", так и "создавать" действия
- Иногда я использую другую библиотеку тестирования (например, Shoulda или RSpec).
Тем не менее, я являюсь поклонником строительных лесов для ускорения разработки.Вот почему я создал генератор nifty_scaffold которым я пользуюсь почти все время.У него нет проблем, упомянутых выше.
Другие советы
Нет ничего плохого в том, чтобы выполнять только те действия, которые вам нужны.В Rails 2.3 вы можете еще более явно указывать свои маршруты.
map.resources :foo, :only => [:create, :destroy, :new]
Помните, что в REST на самом деле есть только 4 глагола GET, POST, ОБНОВЛЯТЬ ПОСТАВИТЬ и УДАЛИТЬ.Действия редактирования и создания в Rails — это обходные пути команды GET для отображения формы редактирования ресурса.Действие индекса — это GET для другого ресурса, оно просто связано с другими, потому что в контексте разработки приложений имеет смысл хранить его в том же файле.