Detele whitespace before validation with StripAttributes
Bài đăng này đã không được cập nhật trong 7 năm
StripAttributes là một phần mở rộng của ActiveModel, nó giúp tự động xóa tất cả các khoảng trống đầu và cuối của thuộc tính trước khi xác nhận. Nếu thuộc tính là trống, mặc định sẽ dải giá trị cho nil. Nó hoạt động bằng cách thêm một before_validation. Theo mặc định, tất cả các thuộc tính đều bị loại bỏ khoảng trống, nhưng ta có thể tùy chỉnh lại nó theo yêu cầu.
Cài đặt:
Thêm gem vào Gemfile
gem "strip_attributes"
Chạy lệnh bundle
Thiết lập:
-Ở đây mình đang thiết lập cho model User, với các model khác thiết lập tương tự. Giả sử model User có các thuộc tính name, email, address, phone
class User < ApplicationRecord
strip_attributes
end
khi thiết lập như vậy tất cả các thuộc tính id, name, email, address, phone trước khi xác nhận sẻ được xóa hết các khoảng trống đầu và cuối.
Tương tư như vậy ta có thể thiết lập các thuộc tính bằng các phương thức sau:
class User < ApplicationRecord
strip_attributes only: [:name, :email] #Chỉ các thuộc tính name, email mới được stripped.
strip_attributes except: :name #Tất cả các thuộc tính đều được stripped trừ thuộc tính name
strip_attributes allow_empty: true #Thuộc tính rổng sẻ không được chuyển đổi thành nil
strip_attributes collapse_spaces: true #Các khoảng trắng(nhiều hơn 1 space) ở giữa các thuộc tính đều được chuyển thành 1 space
strip_attributes replace_newlines: true #Dòng mới trong thuộc tính sẻ được chuyển đổi thành khoảng trắng(space)
strip_attributes only: [:name, :address], :regex => /[^[:alpha:]\s]/ #Bỏ các ký tự được xác định bởi regex
strip_attributes only: :phone, :regex => /[^0-9]/ #Bỏ các ký tự ko phải là số thực
strip_attributes only: :phone, :regex => /[^[:alnum:]\S]/ #Bỏ tất cả các khoảng trắng chỉ giử lại ký tự số và chử
end
Vì mới viết lần đầu nên sẻ không thể tránh nhiều thiếu sót, mong mọi người giúp đở và góp ý thêm ạ. Nguồn: https://github.com/rmm5t/strip_attributes
All rights reserved