2011-02-22 23 views
23

ben şöyle ilişkilidir basit modellerin bir çift var vs varlığı:doğrular: validates_presence_of kullanarak raylar 3

MODELLER

class Task < ActiveRecord::Base 
    belongs_to :user 
    validates :name, :presence => true, :message => 'Name cannot be blank, Task not saved' 
end 

class User < ActiveRecord::Base 
    has_many :tasks 
end 

GÖRÜNÜM şöyle İçinde bir çağrı vardır: user.tasks < - görevler sonra döngü

Sayı: görev modelinde

-

ı kullandığınızda:

validates :name, :presence => true , :message => 'Name cannot be blank, Task not saved' 

500 hatası alıyorum:

ActionView::Template::Error (uninitialized constant User::Task): 
NameError in View file 

ı kullandığınızda:

validates_presence_of :name 

Her şey çalışır.

Ben de aynı ... mesele olduğu yukarıdaki yöntemler ilişkili modellere dernekler ve nasıl doğrulama kravat ile ne ilgisi var doğrular düşündük. Bir şeylerin ilişkilerinin nasıl gerçekleştiğine dair bir önsezim var, ama bu sadece bir önsezidir.

Herhangi bir yardım için teşekkür ederiz. Çok teşekkürler. Daha yeni validates :name biçimini kullandığınızda

cevap

48

, yerine doğrulama her türü için birden fazla satır için olan birden hattında birden fazla doğrulamaları koyabilir. Bu nedenle, Rails :message parametresine çarptığında, bunun :presence ile ilişkili bir mesaj yerine bir doğrulama yöntemi olduğunu düşünüyor. Bunun yerine bu deneyin:

validates :name, :presence => {:message => 'Name cannot be blank, Task not saved'} 

Ayrıca, hatalarınızı göstermek nasıl bağlı olarak, bu hata aslında 'İsim İsim olamaz ....' olarak görüntülenebilir; öyleyse, mesajı 'boş bırakılamaz, Görev kaydedilmedi' olarak ayarlamak istersiniz.

+0

Çok teşekkürler! Bu hile yaptı! – RidingRails

+1

Uluslararasılaşma ile ilgili bir sorum var. Rails alan adını veriyorsa, bu hata mesajı tamamen yerelleştirilebilir mi? Örneğin, ispanyolca 'isim', 'nombre' olmalıdır. Varsayılan mesajı tamamen silmenin bir yolu var mı? – jn29098

+0

Bunun eski bir yayın olduğunu biliyorum, ancak bu hata mesajı nerede görüntülenmeli ve örneğin formu gönderdikten sonra gösteriliyor mu? teşekkür ederim – Richlewis