O doğru olmakla birlikte create
aramaları new
ve daha sonra save
onların dönüş değerleri iki alternatif arasında büyük bir fark vardır.
Save
nesnenin veritabanına başarıyla kaydedilip kaydedilmediğine bağlı olarak true
veya döndürür false
. Bu daha sonra yukarıdaki sorudaki ilk örneğe göre akış kontrolü için kullanılabilir.
Create
nesnenin kaydedilip kaydedilmediğine bakılmaksızın modeli döndürür. Bu, yukarıdaki kod için, if
nesnenin doğrulamalarda başarısız olmasına ve kaydedilmemesine rağmen , ifadenin üst dalının her zaman yürütüleceğinden kaynaklanır.
Eğer kullanırsanız create
mantığını dallanma ile kullandığınız takdirde durum olmadığı sessiz başarısızlık riski vardır new
+ save
.
create!
kayıt geçersiz olduğunda aynı sorundan ve istisnadan muzdarip değildir.
create
Burada bir alternatif kontrol yararlı olabilir respond_with
API (JSON / XML) yanıtlar için kullanılır. Bu durumda, nesnede hataların varlığı, unprocessable_entity
bir API durumundan tam olarak istediğiniz bir durumla yanıtta hataların döndürülmesine neden olur .
Özellikle akış kontrolü için dönüş değerine güveniyorsanız, her zaman html için new
+ save
seçeneğini kullanırdım .