Yanıtlar:
Http://apidock.com/rails/ActiveModel/Validations/ClassMethods/validates_presence_of kullanabilirsinizvalidates_presence_of
class A < ActiveRecord::Base
has_many :bs
validates_presence_of :bs
end
veya sadece validates
http://apidock.com/rails/ActiveModel/Validations/ClassMethods/validates
class A < ActiveRecord::Base
has_many :bs
validates :bs, :presence => true
end
Ancak şunlarla kullanacaksanız, bir hata accepts_nested_attributes_for
var :allow_destroy => true
: İç içe modeller ve üst öğe doğrulaması . Bu konuda çözüm bulabilirsiniz.
-------- Raylar 4 ------------
validates
presence
Benim için basit çalıştı
class Profile < ActiveRecord::Base
belongs_to :user
validates :user, presence: true
end
class User < ActiveRecord::Base
has_one :profile
end
Bu şekilde, Profile.create
şimdi başarısız olacak. user.create_profile
Bir kullanıcıyı kaydetmeden önce kullanmalı veya ilişkilendirmeliyim profile
.
İlişkilendirmeleri validates_existence_of
(bir eklenti olan) ile doğrulayabilirsiniz :
Bu blog girişinden örnek 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 kullanabilirsiniz validates_associated
. As Faysal yorumlarda notlar cevap aşağıda, validates_associated
çekler ilişkili nesne ilişkili sınıf doğrulamaları çalıştırarak geçerli olup olmadığını. O mu değil varlığı için kontrol edin. Bir sıfır ilişkisinin geçerli kabul edildiğini unutmamak da önemlidir.
İlişkilendirmenin hem mevcut olduğundan hem de geçerli olacağından emin olmak istiyorsanız, şunu da kullanmanız gerekir:
class Transaction < ActiveRecord::Base
belongs_to :bank
validates_associated :bank
validates :bank, presence: true
end
validates
gibivalid: true
yerine çağırmak zorundavalidates_associated
ayrı.