Почему в контроллере RESTful необходимо определить новый метод, а затем создать метод create?
Поиск в Google не дал мне ответа, который я искал. Я понимаю разницу, но нужно знать, почему их используют такими, какие они есть.
ruby-on-rails
rest
Sent-Хил
источник
источник
Из ActiveRecord :: Базовая документация:
создать (атрибуты = ноль) {| объект | ...}
new (attribute = nil) {| self if block_given? | ...}
Таким образом,
create
создается новый объект, проверяется его, а затем сохраняет его в базе данных. Иnew
только создает локальный объект, но не пытается проверить или сохранить его в БД.источник
New создает новый экземпляр Model, но он не сохраняется до тех пор, пока не будет вызван метод save.
Create делает то же самое, что и new, но также сохраняет его в базе данных.
Иногда вы хотите что-то сделать перед сохранением чего-либо в базе данных, иногда вы просто хотите создать и сохранить это сразу.
источник
RESTful части Rails очень близки к тому, как работает протокол HTTP. В протоколе HTTP запрос GET не должен изменять какие-либо данные. Логически, если вы посмотрите, как все действия RESTful в Rails работают, они будут совпадать с действиями HTTP. POST предназначен для генерации новых данных, поэтому он логически создается. Вы используете GET для предоставления формы версии этого или, другими словами, нового действия. Index и show также являются GET, update - это PUT (или PATCH в Rails 4+), а destroy - это DELETE в HTTP.
Кроме того, он прекрасно разделяет логику в контроллере и дает вам плавный способ устранения ошибок (путем повторного рендеринга нового действия с сообщениями об ошибках).
источник
"You use a GET to serve the form version of that or in other words, the new action"
спасибо за ответ, но лично я нахожу это соглашение об именах действительно запутанным