แม้ว่ามันจะถูกต้องที่createเรียกnewแล้วsaveมีความแตกต่างใหญ่ระหว่างสองทางเลือกในค่าตอบแทนของพวกเขา
Saveส่งคืนอย่างใดอย่างหนึ่งtrueหรือfalseขึ้นอยู่กับว่าวัตถุถูกบันทึกไปยังฐานข้อมูลเรียบร้อยแล้วหรือไม่ ซึ่งสามารถใช้สำหรับการควบคุมการไหลตามตัวอย่างแรกในคำถามข้างต้น
Createจะส่งคืนโมเดลโดยไม่คำนึงว่าวัตถุนั้นได้รับการบันทึกหรือไม่ สิ่งนี้มีความเกี่ยวข้องกับรหัสข้างต้นซึ่งสาขาด้านบนของifคำสั่งจะถูกดำเนินการเสมอแม้ว่าวัตถุจะล้มเหลวในการตรวจสอบและจะไม่ถูกบันทึก
ถ้าคุณใช้createกับการแยกทางตรรกะคุณมีความเสี่ยงของความล้มเหลวเงียบซึ่งเป็นกรณีที่ไม่ถ้าคุณใช้+newsave
create! ไม่ต้องทนทุกข์ทรมานจากปัญหาเดียวกันในขณะที่มันเพิ่มและยกเว้นหากบันทึกไม่ถูกต้อง
createทางเลือกที่สามารถเป็นประโยชน์ในการควบคุมที่respond_withจะใช้สำหรับ API (JSON / XML) การตอบสนอง ในกรณีนี้การมีอยู่ของข้อผิดพลาดบนวัตถุจะทำให้ข้อผิดพลาดถูกส่งกลับในการตอบสนองด้วยสถานะunprocessable_entityซึ่งเป็นสิ่งที่คุณต้องการจาก API
ฉันมักจะใช้ตัวเลือกnew+ saveสำหรับ html โดยเฉพาะถ้าคุณพึ่งพาค่าตอบแทนสำหรับการควบคุมการไหล