Tìm hiểu Dry Validation trong Ruby On Rails – P1

Tram Ho

▪️Trước tiên, mình sẽ giới thiệu qua về Dry Validation
  • dry-validation là thư viện validation data được cung cấp bởi DSL, nó hoat động với bất kỳ dữ liệu đầu vào nào, cho dù nó là một hash, array hay một đối tượng chứa những liệu được lồng sâu vào với nhau.
  • Validations được thể hiện thông qua các Contract object. Một Contract sẽ xác dịnh một schema với các kiểu check dữ liệu cơ bản và bất kỳ rules nào có thể áp dụng. rules trong Contract chỉ được áp dụng một khi các giá trị mà chúng dựa vào đã được pass qua các kiểu check dữ liệu cơ bản của schema.
  • Sử dụng nó sẽ nhanh hơn nhiều so với việc chúng ta sử dụng ActiveRecord/ActiveModel::Validations, strong-parameters.
  • Để cho thể sử dụng nó trong project của mình ta cần cài đặt nó trước bằng việc add gem 'dry-validation' vào gemfile của project ROR chúng ta nhé
▪️Ta bắt đầu tìm hiểu những thứ căn bản của thư viện này nhé:
1. Type Validate Basic
  • Một số kiểu check validate thường sử dụng trong dry mình có thể kể đến:

2. Schemas
  • Có thể nói Schemas là một phần quan trọng của dry-validation, nó sẽ xử lý dữ liệu trước khi nó bị validate bởi rules ( còn rules là gì thì bên dưới mình sẽ tìm hiểu rõ hơn nhé ) và Schemas có thể cung cấp các thông báo lỗi một cách chi tiết nhất
  • rules ở đây có thể hiểu là mình sẽ validate các dữ liệu một cách cụ thể hơn (các dữ liệu cần validate một cách logic hơn) mà các type validate của gem không hỗ trợ.

?Định nghĩa một Schema cơ bản

  • Để định nghĩa một schema chúng ta sẽ sử dụng schema method:

  • Ở bên trên ta đã khởi tạo một Contact với việc sử dụng required có nghĩa là đầu vào buộc phải có email , age và value của email phải là string và value của age phải là integer
  • Bây giờ, ta sẽ thử áp dụng Contract chúng ta vừa tạo nhé:


?Định nghĩa một Schema với Params required

  • Để định nghĩa một schema cho việc validate HTTP parameters, ta sẽ sử dụng params method:

  • Sự khác biệt chính giữa paramsschema đơn giản là params sẽ thực hiện các bắt buộc dành riêng cho params trước khi áp dụng rules. Trong phần rules ta sẽ tìm hiểu rõ ràng hơn.

?Định nghĩa một Schema với JSON required

  • Ta có thể sử dụng json để định nghĩa một schema phù hợp cho việc xác thực JSON data:


?Sử dụng lại schema từ schema khác

  • Ta có thể sử dụng lại một schema hiện có hoặc multiple schema bằng cách passing nó sang schema chúng ta định nghĩa. Ví dụ:


?Custom Types cho Schema

  • Khi chúng ta định nghĩa schema sử dụng param hay json, ta có thể xử lý cho giá trị dữ liệu đầu vào theo cách ta muốn ví dụ như:


Cảm ơn các bạn đã đọc bài viết của mình

Tài liệu tham khảo: Dry Validation

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo