2011-11-10 38 views
12

Cách đơn giản nhất để đảm bảo các mô hình cắt không gian trắng ở đầu và cuối từ các giá trị chuỗi.Làm cách nào để xóa khoảng trắng khỏi Thuộc tính mô hình?

Một cách bất tiện có vẻ là bộ lọc before_save - mặc dù có điều gì đó phổ biến như xóa không gian màu trắng khỏi chuỗi, có thể có một số cấu hình thực hiện điều đó?

+0

Tôi không biết bất kỳ cấu hình nào trả lại điều đó, nhưng trong trường hợp hook before_validation bạn có thể kiểm tra điều này: http://stackoverflow.com/questions/4294923/rails-3-strip-whitespace-before-validation-on- all-form – sparrovv

+0

Xem [triển khai tại đây] (http://railsforum.com/viewtopic.php?id=969). – Zabba

Trả lời

9

Không có cài đặt toàn cầu/cấu hình tích hợp vì lý do bạn không muốn làm điều này, vì vậy bạn nên thực hiện tốt hơn từng trường hợp như mô tả và với strip(field) trong bộ lọc trước. Có một viên ngọc mặc dù được Jacob chi tiết.

Tôi cũng khuyên bạn nên thận trọng khi thực hiện bất kỳ thao tác nào với giá trị của người dùng. Một phương pháp hay nhất phổ biến là lưu "bất cứ điều gì" mà người dùng gõ ", mụn cóc và tất cả" (cũng ok, không gian trong trường hợp này). Sau đó, thao tác nội bộ và định dạng để hiển thị theo yêu cầu.
Dòng chính của lý luận ở đây là khi người dùng chỉnh sửa lại thông tin của họ, tốt hơn là cung cấp cho họ 'chính xác những gì họ đã nhập trước' thay vì bị bắt kịp với những gì có thể là xác thực phức tạp và giao diện người dùng rất giòn.

Mặt khác, hãy đảm bảo sử dụng các trường 'dữ liệu phù hợp', ví dụ: không lưu trữ ngày trong chuỗi, nó yêu cầu sự cố.

2

Tôi chỉ có một bộ lọc chạy trước khi xác thực và rơi qua tất cả các thông số để cắt chúng. Nếu bạn đặt nó trên lớp điều khiển cơ sở của bạn, bạn chỉ cần đặt nó và quên nó.

2

Trên thực tế, điều này khó chịu cho tôi một ít quá - vì vậy tôi đã viết này

https://github.com/omarqureshi/AR-stripper

sẽ công bố này như một viên ngọc sớm hay muộn nhưng trong khi chờ đợi chỉ

gem 'stripper', :git => "[email protected]:omarqureshi/AR-stripper.git" 

trong Gemfile của bạn sẽ làm

0

Bạn cũng có thể sử dụng gọi lại để tách khoảng trắng mà không sử dụng đá quý.

Các vấn đề liên quan