Tôi có một bộ sưu tập các đối tượng ActiveRecord. Tôi muốn có thể chạy tất cả các xác nhận hợp lệ cho từng đối tượng này mà không thực sự lưu chúng vào cơ sở dữ liệu. Tôi chỉ muốn biết liệu chúng có hợp lệ không Tôi có thể lưu chúng vào cơ sở dữ liệu không. Nói cách khác, về cơ bản tôi muốn điền vào cấu trúc dữ liệu errors
cho từng đối tượng của mình. Có cách nào để làm việc này không? Hoặc có lẽ tôi đang thiếu một cái gì đó về vòng đời của bộ sưu tập errors
?Chạy xác thực ActiveRecord mà không lưu
10
A
Trả lời
23
Bạn có thể làm như sau để kiểm tra xem một mô hình có giá trị:
@user = User.new
if @user.valid?
#do things
Nếu bạn muốn nhìn thấy những sai sót được, bạn có thể làm:
@user = User.new
unless @user.valid?
@user.errors.each {|k, v| puts "#{k.capitalize}: #{v}"}
Gọi ".có hiệu lực?" phương pháp chạy xác thực của bạn, đặt tất cả các lỗi của bạn vào một đối tượng ActiveRecord :: lỗi, có thể được truy cập như tôi đã làm trong ví dụ trên. Hãy thử các ví dụ trong Bảng điều khiển để cảm nhận nó nếu bạn muốn.
2
Chạy phương thức #valid?
trên đối tượng sẽ chạy tất cả các xác thực và điền cấu trúc errors
.
dude = Person.new
unless dude.valid?
# Examine errors
end
Các vấn đề liên quan
- 1. Nhận thông báo lỗi xác thực mà không lưu
- 2. tải lên tệp mà không có activerecord
- 3. Xác thực biểu mẫu mà không có Doctrine Entity
- 4. Xác thực API Soundcloud mà không cần trình duyệt web
- 5. Chạy mà không gỡ lỗi trong nhật thực
- 6. Chạy Java thực thi mà không cần cài đặt JRE?
- 7. Xác thực bảo mật mà không cần SSL
- 8. Lưu trữ mã xác thực trên iOS
- 9. Xác thực xác thực mà không cần mật khẩu, chỉ sử dụng tên người dùng
- 10. Rails nhận được lỗi xác thực không thành công, nhưng không có lỗi trong mô hình lỗi ActiveRecord
- 11. Ngăn ActiveRecord lưu() trên một cá thể
- 12. Rails ActiveRecord xác thực regex của các trường không bắt buộc
- 13. Tại sao tôi không thể kiểm tra xác thực ActiveRecord trong bảng điều khiển?
- 14. bash: lưu trong một biến số giây mà một quá trình đã thực hiện để chạy
- 15. Xác thực Twitter mà không cần sử dụng pin
- 16. Xác thực trong Rails mà không có mô hình
- 17. xác thực django mà không cần mật khẩu
- 18. Google API: Cách xác thực mà không cần chuyển hướng?
- 19. Eclipse: lưu mà không lưu hành động
- 20. Cách xác thực miền thư mục hoạt động mà ứng dụng của tôi đang chạy?
- 21. Got ActiveRecord :: AssociationTypeMismatch trên mô hình lưu
- 22. Đường ray - Thêm trường tùy chỉnh khi chạy trong ActiveRecord
- 23. Rails Xác thực ActiveRecord: độ dài tối đa của một chuỗi?
- 24. ActiveRecord tải trường nhị phân không chính xác trên Heroku, tốt trên OSX
- 25. Làm thế nào để loại bỏ cột mà không có thời gian chết với ActiveRecord 3.1?
- 26. Chạy lệnh shell từ Node.js mà không cần lưu vào bộ đệm
- 27. Tích hợp RSA SecurID vào ứng dụng web mà không cần chạy Trình quản lý xác thực RSA
- 28. Rails 4: ActiveRecord không lưu bất kỳ thuộc tính nào, lưu các giá trị mặc định
- 29. FormsAuthentication.Authenticate không xác thực
- 30. Làm cách nào để làm cho vim-latex biên dịch chính xác mà không phải lưu?
Dọc theo các dòng tương tự, tôi đang cố gắng hiển thị liên kết xuất bản dựa trên hồ sơ có giá trị để xuất bản hay không. Trong xác nhận của tôi, tôi đang sử dụng xác nhận: nếu định dạng. Có cách nào dễ dàng để thay đổi thuộc tính để nói: true và sau đó kiểm tra xem nó có hợp lệ để xuất bản không? Ví dụ: post = Post.new (: title => "title",: published => false) post.published = true nếu post.valid? post.published = false – chetu