SORU
23 EYLÜL 2008, Salı


Nasıl 'doğrulamak' raylar üzerinde yok muyum

Dinlendirici bir kaynak yok edilmesi, işlemi devam yok etmek için izin vermeden önce bir kaç şey garanti istiyorum? Temel olarak, eğer bunu yaparken geçersiz bir durumu veritabanında yer diye Not Eğer işlem yok durdurmak için yeteneği istiyorum? Orada bir geri aramaları operasyonun hiçbir doğrulama yok, o yüzden nasıl bir "operasyon yok," ister kabul edilmelidir? doğrulamak mu

CEVAP
23 EYLÜL 2008, Salı


O zaman seni yakalamak hangi bir özel durum neden olabilir. Raylar konularda yardımcı olan bir işlem siler tamamladı.

Örneğin:

class Booking < ActiveRecord::Base
  has_many   :booking_payments
  ....
  def destroy
    raise "Cannot delete booking with payments" unless booking_payments.count == 0
    # ... ok, go ahead and destroy
    super
  end
end

Alternatif olarak before_destroy geri kullanabilirsiniz. Bu geri çağırma normalde bağımlı kayıtlarını yok etmek için kullanılır, ancak bir özel durum veya bir hata yerine ekleyebilirsiniz.

def before_destroy
  return true if booking_payments.count == 0
  errors.add :base, "Cannot delete booking with payments"
  # or errors.add_to_base in Rails 2
  false
end

myBooking.destroy şimdi yanlış döndürür, ve myBooking.errors dönüşte doldurulur.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BMG Rentals Property Management

    BMG Rentals

    23 Mayıs 2011
  • Joseph Herscher

    Joseph Hersc

    14 Mart 2007
  • whatever

    whatever

    30 EYLÜL 2005