Neden RESTful denetleyicisinde yeni bir yöntem tanımlamaya, bir oluşturma yöntemiyle izlemeye ihtiyaç var?
Google arama aradığım yanıtı vermedi. Farkı anlıyorum, ancak neden oldukları gibi kullanıldıklarını bilmeliyim.
Neden RESTful denetleyicisinde yeni bir yöntem tanımlamaya, bir oluşturma yöntemiyle izlemeye ihtiyaç var?
Google arama aradığım yanıtı vermedi. Farkı anlıyorum, ancak neden oldukları gibi kullanıldıklarını bilmeliyim.
Yanıtlar:
Rails REST uygulaması içinde yeni ve oluşturmak işlemleri farklı şekilde ele alınmaktadır.
Bir HTTP GET için /resources/new
çağırarak öyle yeni bir kaynak oluşturmak için uygun bir form kazandırmak için tasarlanmıştır yeni , yeni kaydedilmemiş kayıt oluşturan ve formu oluşturan denetleyicideki eylemi .
Yeni eylemin bir /resources
parçası olarak oluşturulan kaydı alıp denetleyicideki oluşturma eylemine ileten ve daha sonra veritabanına kaydetmeye çalışan bir HTTP POST .
Gönderen ActiveRecord :: Base belgelerinde:
create (attributes = nil) {| nesne | ...}
Bir nesne (veya birden çok nesne) oluşturur ve doğrulamalar geçerse onu veritabanına kaydeder. Elde edilen nesne, nesnenin veritabanına başarıyla kaydedilip kaydedilmediği döndürülür.
new (attributes = nil) {| block_given ise kendini? | ...}
Yeni nesneler boş olarak (yapı parametresini geçmez) veya özniteliklerle önceden ayarlanmış ancak henüz kaydedilmemiş olarak ilişkilendirilebilir (ilişkili tablo sütun adlarıyla eşleşen anahtar adlarıyla bir karma geçirin). Her iki durumda da, geçerli nitelik anahtarları ilişkili tablonun sütun adlarıyla belirlenir; bu nedenle tablo sütunlarının parçası olmayan niteliklere sahip olamazsınız.
Böylece create
yeni nesneyi başlatır, doğrular ve sonra veritabanına kaydeder. Ve new
yalnızca yerel nesneyi oluşturur ancak onu doğrulamaya veya DB'ye kaydetmeye çalışmaz.
Yeni, yeni bir Model örneğini başlatır, ancak kaydetme yöntemi çağrılıncaya kadar kaydedilmez.
Create, yeni ile aynı şeyi yapar, ancak veritabanına da kaydeder.
Bazen bir şeyi veritabanına kaydetmeden önce bir şeyler yapmak istersiniz, bazen sadece hemen oluşturmak ve kaydetmek istersiniz.
RESTful Rails bölümleri HTTP protokolünün çalışma şekline çok yakın olacak şekilde yapılmıştır. HTTP protokolünde, bir GET isteğinin herhangi bir veriyi değiştirmesi gerekmez. Mantıksal olarak, Rails'teki tüm RESTful eylemlerinin çalışma şekline bakarsanız, HTTP eylemleriyle eşleşir. Bir POST yeni veri oluşturmak içindir, bu nedenle mantıksal olarak oluşturulur. Bir GET, bunun form biçimini veya başka bir deyişle yeni eylemi sunmak için kullanın. Dizin ve şov da GET'tir, güncelleme bir PUT'dur (veya Rails 4+'da PATCH) ve destroy HTTP'de bir DELETE'dir.
Buna ek olarak, kontrolördeki mantığı güzel bir şekilde ayırır ve hatalarla başa çıkmanın yumuşak bir yolunu sunar (yeni eylemi hata mesajlarıyla yeniden oluşturarak).
"You use a GET to serve the form version of that or in other words, the new action"
cevap için teşekkürler ama şahsen bu adlandırma kuralını gerçekten kafa karıştırıcı buluyorum