Stripe วางแผนว่าจะปรับปรุงกฏของ Radar ในสิ้นเดือนพฤษภาคม 2024 นี้ เพื่อให้เข้าใจและจัดการลักษณะการทำงานได้ง่ายขึ้นในกรณีที่ค่าต่างๆ ในแอตทริบิวต์ตกหล่น
ในปัจจุบัน หากคุณเขียนกฎอย่างเช่น บล็อกถ้า :email_domain: != 'notfraud.com'
และค่า :email_domain:
ตกหล่นไป ระบบก็จะไม่พบผลลัพธ์ที่ตรงกับกฎนี้ เนื่องจาก Stripe ตีความว่า != 'notfraud.com'
คือแอตทริบิวต์ที่มีค่านอกเหนือจาก 'notfraud.com'
อย่างชัดแจ้ง ซึ่งแอตทริบิวต์ที่ตกหล่นจะไม่สามารถเติมเต็มเงื่อนไขของกฎนี้ได้ ในทางกลับกัน หากคุณเขียนกฎที่คล้ายกันอย่างเช่น บล็อกถ้า NOT (:email_domain: = 'notfraud.com')
และค่า :email_domain:
ตกหล่นไป ระบบก็จะพบผลลัพธ์ที่ตรงกับกฎนี้ เนื่องจากค่าในวงเล็บอย่าง :email_domain: = 'notfraud.com'
จะถูกประเมินว่าเป็นเท็จ ซึ่งเมื่อมารวมกับการดำเนินการ NOT
ก็จะทำให้กลายเป็นจริง
อย่างไรก็ตามในตัวตีความแบบใหม่ กฎทั้งสองจะให้ผลลัพธ์ว่าไม่มีรายการใดตรงกับกฎดังกล่าว นั่นก็เพราะว่าการเปรียบเทียบใดๆ (เช่น =, !=, >, <, IN
) ระหว่างแอตทริบิวต์ที่ตกหล่นกับค่าหรือแอตทริบิวต์อื่นซึ่งคงที่ (ที่ตกหล่นหรือปรากฏอยู่) จะไม่นำข้อมูลซึ่งตกหล่นไปนั้นมาพิจารณาด้วย ในทำนองเดียวกัน การดำเนินการทางตรรกะ (เช่น AND, OR, NOT
) ที่มีค่าซึ่งตกหล่นไปจะให้ผลลัพธ์ตามที่แอตทริบิวต์ตกหล่นไป เว้นแต่จะมีการระบุไว้อย่างชัดแจ้ง กฎใดๆ ที่ไม่นำค่าที่ตกหล่นไปมาพิจารณาตลอดการประเมินจะได้มีผลลัพธ์ที่ตรงกับกฎ
คุณสามารถระบุหากฎที่จะได้รับผลกระทบจากการเปลี่ยนแปลงนี้ได้โดยตรวจสอบภาคแสดงที่ใช้นิเสธ NOT
ที่มีแอตทริบิวต์ที่ซ้อนทับกันซึ่งอาจตกหล่นไป หากคุณต้องการให้ลักษณะการทำงานเพื่อหาผลลัพธ์ที่ตรงกันของบล็อกถ้า NOT(:email_domain: = 'notfraud.com')
ยังคงเป็นเหมือนเดิม คุณต้องทำการเปลี่ยนแปลงภาคแสดงของกฎอย่างชัดแจ้งให้จัดการกับค่าที่ตกหล่นไป ดังนี้ บล็อกถ้า is_missing(:email_domain:)OR NOT(:email_domain: = 'notfraud.com')
มิฉะนั้น กฎของคุณจะปรับใช้ลักษณะการทำงานที่อัปเดตใหม่โดยอัตโนมัติเมื่อ Stripe เริ่มทยอยบังคับใช้การเปลี่ยนแปลงในเดือนพฤษภาคม 2024