Sadece geçerli alan veritabanında boş değilse, bir alanın boş/boş bırakılmasına izin vermeyecek özel bir doğrulama işlevi oluşturmak istiyorum. Doğrulama işlevindeki veritabanı değerine (eski değer) nasıl erişebilirim? Self.name_of_field kullanarak yeni değere erişebilirim. Raylar: Düzenleme sırasında doğrulama için eski değeri ve yeni değeri karşılaştırın
Bu
benvalidate :image_remote_url_change
def image_remote_url_change
if self.image_remote_url.blank? and self.image_remote_url_changed?
errors.add(:field, "can't be blank once set")
return false
end
end
Şu anda varolan nesneyi düzenlemek çalışırsanız şu anda ne var, o boş bir yeni değeri kabul olmaz ama yeni bir nesne oluşturduğunuz zaman "olabilir diyecek eski değere asla ayarlanmasa bile, bir kez ayarlanamaz.
+1. Heroku'dan Schneems'in bir önceki makalesinde (http://schneems.com/post/28425724540/get-previously-saved-changes-in-rails), bir önceki_kullanım yöntemini tartışıyor ve bu da size yardımcı olabiliyor: – stephenmurdoch
Doesn ' t Bu sadece nesne değişmiş olsa da işe yarıyor mu? içinde olduğu gibi başarıyla kaydedildi. Ben sadece bunu bir doğrulama adımında yapıyorum –
@ glumbo deneyin ve – stephenmurdoch