Mengapa ada kebutuhan untuk mendefinisikan metode baru di RESTful controller, ikuti dengan metode create?
Pencarian Google tidak memberikan saya jawaban yang saya cari. Saya mengerti perbedaannya, tetapi perlu tahu mengapa mereka digunakan sebagaimana adanya.
sumber
Dari dokumentasi ActiveRecord :: Base :
buat (atribut = nil) {| objek | ...}
baru (atribut = nil) {| self if block_given? | ...}
Jadi
create
instantiate objek baru, validasikan, dan simpan ke database. Dannew
hanya membuat objek lokal tetapi tidak berusaha untuk memvalidasi atau menyimpannya ke DB.sumber
Baru instantiates instance Model baru, tetapi tidak disimpan sampai metode penyimpanan dipanggil.
Buat melakukan hal yang sama seperti baru, tetapi juga menyimpannya ke database.
Terkadang Anda ingin melakukan hal-hal sebelum menyimpan sesuatu ke database, kadang-kadang Anda hanya ingin membuat dan menyimpannya segera.
sumber
Bagian RESTful Rails dibuat sangat dekat dengan cara kerja protokol HTTP. Dalam protokol HTTP, permintaan GET tidak seharusnya mengubah data apa pun. Secara logis, jika Anda melihat cara semua tindakan RESTful di Rails bekerja, mereka akan cocok dengan tindakan HTTP. POST adalah untuk menghasilkan data baru, sehingga secara logis dibuat. Anda menggunakan GET untuk melayani versi bentuk dari itu atau dengan kata lain, tindakan baru. Indeks dan pertunjukan juga GET, pembaruan adalah PUT (atau PATCH di Rails 4+), dan menghancurkan adalah HAPUS dalam HTTP.
Selain itu, ia dengan baik memisahkan logika dalam pengontrol dan memberi Anda cara yang mulus untuk mengatasi kesalahan (dengan merender ulang tindakan baru dengan pesan kesalahan).
sumber
"You use a GET to serve the form version of that or in other words, the new action"
terima kasih atas jawabannya tetapi secara pribadi saya menemukan konvensi penamaan ini benar-benar membingungkan