'dan geçiyorsa, bir alanın varlığını doğrulamak istiyorum ve alan için değer yoksa bir hata iletisi döndürmek istiyorum. Daha sonra, bu varlık doğrulamasının geçtiğini varsayarak, bir içerme doğrulaması çalıştırmak istiyorum.Çalıştırma rayları yalnızca varlık varlığı
Şu anda var:
validates :segment_type, presence: true
validates :segment_type, inclusion: { in: SEGMENT_TYPES }
Ama sorun, yukarıdaki girişimleri ikisi için yokken değerdir: İki ayrı doğrulamaları içine bölme bu kadar çalıştık
validates :segment_type, presence: true, inclusion: { in: SEGMENT_TYPES }
şöyle segment_type
alana dahil edilir, ben de yanıtlar için hata iletileri alıyorum:
Segment type can't be blank
Segment type is not included in the list
Bu durumda, sadece ikinci ileti değil "Segment türü boş olamaz" istiyorum.
bu koşullu doğrulama yapmak ve bana özel bir işlev tanımlamak zorunda kalmadan bana hata iletileri istenen şelale vermek için raylar anlarsınız herhangi bir şekilde, sırayla bu koşulları denetler segment_type_presence_and_inclusion_check
demek ve validate :segment_type_presence_and_inclusion_check
ile çağırarak var mı? inclusion
seçeneği içinde bir if
içinde
mu içerme 'Bu sadece iş üzerine
allow_blank
kullanmak mümkün olmalıdır:'? Özel bir doğrulayıcı ile 'içerme 'yerine geçemiyorum ve bu yüzden aşağıdaki @ michael-discenza yöntemini kullanıyorum, ancak modele yalnızca bir kez (iki kere değil)' validates: 'çağrılarak mümkün olması gerektiğini hissediyor. –Hayır, diğer doğrulama yardımcılarıyla çalışmalıdır. Düzeltmeye çalıştığınız kod nedir? – jvnill
'validates: başlık, varlık: true, length: {maximum: 255}' 'validates: başlık, generate_url: true, if: proc {| p | p.title.present? && p.title.length <= 255} ' Daha sonra' app/validators' içinde 'GenerateUrlValidator' var. –