Doğrulamayı yalnızca belirli formlarda (denetleyicinin eylemi) tetiklemek için herhangi bir yol var mı? User.create(:validate=>true)
bayrağı gibi bir şey. ,Yalnızca belirli bir formda doğrulama
s = SomeModel.new
s.make_special
Doğrulamayı yalnızca belirli formlarda (denetleyicinin eylemi) tetiklemek için herhangi bir yol var mı? User.create(:validate=>true)
bayrağı gibi bir şey. ,Yalnızca belirli bir formda doğrulama
s = SomeModel.new
s.make_special
Evet, mesela, doğrulamaları için conditionals sağlayabilmektedir Yeni kayıtların geçerliliğini atlamak istersiniz. Bu durumda, thomasfedb cevabını kullanabilirsiniz, ancak @special
değişken kullanın yok ama:
validates_presence_of :something, :if => :persisted?
Bu kaydedilmiş User
s için sadece doğrulamak, ancak yeni User
s için olacaktır. persisted?
'daki API belgelerine bakın.
Yani, kaydetme modelinden sonra yanlış için özel ayarlamalıyım, değil mi? – methyl
Hayır. 'Özel 'sadece bir örnek değişkenidir. Yapacak daha fazla işiniz olmadıkça, sadece ölmesine izin verebilirsiniz, daha fazla veritabanı sorgusu için kalıcı olmayacaktır. – thomasfedb
yorumlarınızla açıklandığı gibi:
validates_presence_of :something, :if => :special?
private
def make_sepcial
@special = true
end
def special?
@special
end
Artık bu doğrulamaları açmak için yapmanız gereken tek şey:
Ayrıca şunları kullanabilirsiniz: without =>: persisted? Eğer ters yönde doğrulama istiyorsanız yeni ama kaydedilmemiş. –
Doğru cevap budur – doz87
Bu biraz eski. Ama bu tür davranışları ele almanın iyi bir yolu olarak http://apidock.com/rails/Object/with_options'u buldum.
Bunu neden yapmaya çalışıyorsunuz? Belki de sorunuzun arkasındaki nedenleri biliyorsak daha iyi bir cevap verebiliriz. – rdvdijk
Kullanıcı profilim, profilden ayrılmadım, kayıt olduğunuzda sadece birkaç alan sağlamanız ve dinlenme işleminin kullanıcı eylemini düzenlemesi için doldurmanız gerekiyor. – methyl
Btw, şu şekilde tüm doğrulamaları iletebilir: Model.save (false) – emrahbasman