Meskipun benar bahwa createpanggilan newdan kemudian saveada perbedaan besar antara dua alternatif dalam nilai pengembaliannya.
Savemengembalikan salah satu trueatau falsetergantung pada apakah objek berhasil disimpan ke database atau tidak. Ini kemudian dapat digunakan untuk kontrol aliran sesuai contoh pertama dalam pertanyaan di atas.
Createakan mengembalikan model terlepas dari apakah objek itu disimpan atau tidak. Ini memiliki implikasi untuk kode di atas bahwa cabang atas ifpernyataan akan selalu dieksekusi bahkan jika objek gagal validasi dan tidak disimpan.
Jika Anda menggunakan createdengan logika percabangan Anda berisiko gagal diam yang tidak terjadi jika Anda menggunakan new+ save.
create! tidak mengalami masalah yang sama seperti yang timbul dan pengecualian jika catatan tidak valid.
The createalternatif dapat berguna dalam controller di mana respond_withdigunakan untuk API (JSON / XML) tanggapan. Dalam hal ini keberadaan kesalahan pada objek akan menyebabkan kesalahan dikembalikan dalam respons dengan status unprocessable_entity, yang persis seperti yang Anda inginkan dari API.
Saya akan selalu menggunakan opsi new+ saveuntuk html, terutama jika Anda mengandalkan nilai balik untuk kontrol aliran.