Có thực tế tốt hơn (và tại sao) để xác thực các thuộc tính trong mô hình hoặc trong định nghĩa cơ sở dữ liệu?Ruby on Rails: Có tốt hơn để xác thực trong mô hình hoặc cơ sở dữ liệu không?
Đối (một tầm thường) ví dụ:
Trong mô hình sử dụng:
validates_presence_of :name
so với trong cuộc di cư:
t.string :name, :null => false
Một mặt, bao gồm nó trong cơ sở dữ liệu dường như nhiều hơn một đảm bảo chống lại bất kỳ loại dữ liệu xấu lẻn vào. Mặt khác, bao gồm nó trong mô hình làm cho mọi thứ minh bạch hơn và dễ hiểu hơn bằng cách nhóm nó trong mã với phần còn lại o f các xác nhận hợp lệ. Tôi cũng xem xét làm cả hai, nhưng điều này có vẻ như cả hai không DRY và ít bảo trì.
Bạn đánh bại tôi đến 20 giây;) – Aurril
Tôi đồng ý với việc xác thực ràng buộc ở cả hai nơi (tôi sử dụng PostgreSQL và plugin sexy_pg_constraints http://github.com/maxim/sexy_pg_constraints cho việc này) nhưng không hoàn toàn đúng xác thực các mô hình của bạn sẽ lưu truy vấn DB. Ví dụ, 'validates_uniqueness_of' phải thực hiện truy vấn DB. –