การตรวจสอบความถูกต้องของ Rails ActiveRecord มีประโยชน์หรือไม่หากการตรวจสอบอื่น ๆ จะล้มเหลว

หากฉันมีการตรวจสอบที่จำเป็นต้องมีค่าบางอย่างในฟิลด์ เช่น format: { with: some_regex } หรือ inclusion: { in: some_array } ที่จะล้มเหลวเมื่อเว้นว่างหรือไม่มี การตั้งค่าการตรวจสอบความถูกต้อง presence: true จะมีประโยชน์ในทางใดทางหนึ่งหรือไม่ ในสถานการณ์เดียวกัน การตรวจสอบความถูกต้อง length: { } จะมีประโยชน์หรือไม่หากการตรวจสอบความถูกต้องอื่นๆ จะล้มเหลว

ในทำนองเดียวกัน การตรวจสอบความยาวของ {1..n} สามารถขัดขวางความจำเป็นในการตรวจสอบสถานะได้หรือไม่

ฉันกำลังพยายามเรียนรู้ว่ามีอะไรเกิดขึ้นมากกว่านี้หรือเช็คนั้นซ้ำซ้อนหรือไม่ ตัวอย่างเช่น Rails Tutorial มีการตรวจสอบความถูกต้อง presence: true สำหรับที่อยู่อีเมล แต่การตรวจสอบความถูกต้องของรูปแบบไม่ควรอนุญาตให้มีช่องว่างหรือไม่มีที่อยู่ ดูเหมือนซ้ำซ้อน หรือเป็นรูปแบบ/แบบแผน?


person George Shaw    schedule 11.05.2012    source แหล่งที่มา


คำตอบ (2)


หากคุณกำลังใช้บางอย่างเช่น format: regex และคุณสามารถรับประกันได้ (ง่ายพอผ่านการทดสอบหน่วย) ว่าแอตทริบิวต์ว่างหรือไม่มีจะทำให้บันทึกทั้งหมดไม่ถูกต้อง ใช่แล้ว คุณไม่จำเป็นต้องตรวจสอบการมีอยู่ เช่นเดียวกับสถานการณ์ inclusion และสถานการณ์ length

โดยทั่วไป การเพิ่มการตรวจสอบความถูกต้อง เพิ่มเติม ไม่จำเป็นต้องเป็นสิ่งที่ไม่ดีเสมอไป แต่ถ้าคุณได้ทดสอบโมเดลของคุณอย่างละเอียดสำหรับสถานการณ์ที่ไม่มีแอตทริบิวต์ว่างหรือไม่มี และการตรวจสอบปัจจุบันของคุณบรรลุผลตามที่ต้องการ คุณก็ไม่เป็นไร

person MrDanA    schedule 11.05.2012

การตรวจสอบความถูกต้องหากอ่อนแอกว่า แสดงว่ามีสิ่งใดก็ตามที่กล่าวถึง ฉันไม่ใส่ดีกว่า

validates presence: true

มีเช่น

validates format: { with: some_regex }, allow_blank: false

เนื่องจากในภายหลังจะครอบคลุมสถานการณ์ด้วยฟิลด์ที่มีค่า nil แล้ว

person gmile    schedule 11.05.2012