2015-03-25 15 views
6

Xác thực tùy chỉnh của tôi dường như chạy trước khối before_save của tôi, điều này thật kỳ quặc đối với tôi. Tôi biết về before_validation, nhưng tôi đang cố gắng kiểm tra trình xác thực tùy chỉnh của mình, vì vậy móc hook before_validation sẽ không cho phép tôi. Tôi cũng đọc rằng thử nghiệm một phương pháp riêng (validator của tôi) là thực hành xấu. Tôi nên làm gì?Có before_save chạy sau khi xác thực không?

Thông tin thêm: Chúng tôi muốn người dùng có thể tải lên Tài liệu bằng URL hoặc Tệp nhưng không phải cả hai hoặc không có (xor). Trình duyệt tính hợp lệ của tôi kiểm tra xor trong số này. Nếu người dùng chỉnh sửa Tài liệu, móc before_save sẽ xóa URL hoặc Tệp hiện tại. Về lý thuyết, dòng chảy nên là:

  1. Tải lên tệp
  2. Validate và lưu
  3. Tải lên URL
  4. before_save, xác nhận, lưu

Nhưng trong thử nghiệm của tôi, tôi nhận được lỗi xác nhận , cho thấy rằng before_save không xảy ra.

+3

có: http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html – Kamen

+0

Tại sao không đưa ra xác nhận và viết một phương pháp khác? Sau đó, before_save có thể gọi phương thức "xác thực" tùy chỉnh – liyicky

Trả lời

14
after_initialize ↓ (1) 

before_validation ↓ (2) 
after_validation ↓ (3) 

before_save ↓ (4) 

before_create ↓ (5) 
after_create ↓ (6) 

after_save ↓ (7) 

after_commit ↓ (8) 
Các vấn đề liên quan