Başka bir model B ile "has_many" ilişkilendirmesi olan bir A modeline sahibim. A'nın bir ekleme yapmasının en az 1 ilişkilendirilmiş B kaydına sahip olmasını gerektiren bir iş gereksinimim var. Bunun olduğundan emin olmak için arayabileceğim bir yöntem var mı Doğru mu, yoksa özel bir doğrulama mı yazmalıyım?Raylar - Derneğin Varlığını Doğrulamak?
cevap
kullanabilirsiniz validates_presence_of
http://apidock.com/rails/ActiveModel/Validations/ClassMethods/validates_presence_of
class A < ActiveRecord::Base
has_many :bs
validates_presence_of :bs
end
ya da sadece validates
http://apidock.com/rails/ActiveModel/Validations/ClassMethods/validates
class A < ActiveRecord::Base
has_many :bs
validates :bs, :presence => true
end
Ama :allow_destroy => true
ile accepts_nested_attributes_for
kullanacaksanız onunla bir hata vardır: Nested models and parent validation. Bu konuda çözüm bulabilirsiniz.
Sen (bir eklenti olan) validates_existence_of
ile ilişkilendirmeleri doğrulayabilir:
Örnek this blog entry bir pasaj:
class Tagging < ActiveRecord::Base
belongs_to :tag
belongs_to :taggable, :polymorphic => true
validates_existence_of :tag, :taggable
belongs_to :user
validates_existence_of :user, :allow_nil => true
end
Alternatif olarak, validates_associated
kullanabilirsiniz. Yanıtın altında Faisal notes in the comments olarak, validates_associated
ilişkili nesneyi ilişkili sınıf geçerliliklerini çalıştırarak geçerli olup olmadığını denetler. varlığını kontrol ediyor. Bir nil ilişkisinin geçerli kabul edildiğini belirtmek de önemlidir.
-------- 4 ------------
Basit validates
presence
Profile.create
şimdi başarısız olur, bana
class Profile < ActiveRecord::Base
belongs_to :user
validates :user, presence: true
end
class User < ActiveRecord::Base
has_one :profile
end
Bu şekilde çalıştı Raylar . user.create_profile
kullanmalıyım veya bir kullanıcıyı profile
kaydetmeden önce ilişkilendirmeliyim. Eğer ilişki mevcut ve geçerli olması garanti hem olduğundan emin olmak istiyorsanız
, ayrıca
class Transaction < ActiveRecord::Base
belongs_to :bank
validates_associated :bank
validates :bank, presence: true
end
- 1. raylar paypal bildirimi doğrulamak Japonca
- 2. Raylar 3 özel mesajlarla birçok sütunun varlığını doğrular
- 3. tipleri arasında bir derneğin asıl sonunu belirlenemedi
- 4. Raylar karma kapsamı ile 4 validate benzersizliği bu sözdizimine sahip Raylar 3.2 olarak
- 5. has_and_belongs_to_many öğesinin varlığını doğrulayın
- 6. HTML varlığını Handlebar'larla kod çözme
- 7. Ekto - ilişkili modelin varlığını doğrulayın
- 8. Nesne-C Çerçevesinin Varlığını Denetleme
- 9. Appium: Göreceli öğe varlığını doğrulayın
- 10. Öğeleri doğrulamak ItemsControl
- 11. URLRegularExpression URL'yi doğrulamak için
- 12. Bir cümle içinde std :: vector öğesinin varlığını nasıl kontrol edebilirim?
- 13. xHTML 1.0 sıkı - Doğrulamak iFrames
- 14. MVC değil doğrulamak boş dize
- 15. Senkronizasyondan önce içeriği doğrulamak rsync
- 16. ADO.NET DataRow - sütun varlığını kontrol edin
- 17. ManyToMany ilişkisinde nesnenin varlığını kontrol etme (Django)
- 18. iPhone anahtar/değer kodlaması - anahtarın varlığını sınama
- 19. Ruby'de bir dizgede bir karakterin varlığını bulma
- 20. Dart'ta bir fonksiyonun varlığını nasıl test edebilirim?
- 21. Veritabanımda eklemeden önce değer varlığını nasıl ekleyebilirim?
- 22. XSLT'de bir dosya varlığını nasıl kontrol edebilirim?
- 23. Bırakmadan önce tablo varlığını kontrol edin?
- 24. .vimrc'de, renk şemasının varlığını nasıl kontrol edebilirim?
- 25. Bir NDB varlığını veri deposundan nasıl yenilerim?
- 26. Raylar: iki sütun (birlikte)
- 27. Raylar: Özel doğrulama iletisi
- 28. Raylar Eğitimi - 2.5.2 Validaiton egzersizini işe alamıyorum
- 29. script/raylar vs raylar
- 30. Raylar
'has_many kullanmak gerekir: lulz bs' – Archonic