2012-07-03 21 views
5

Trong cả Rails 2 và Rails 3, nếu: autosave => true một liên kết has_many, bộ sưu tập được lặp lại và lưu (: validate => false) được gọi trên mỗi hiệp hội trẻ em. Tại sao vậy? Chúng ta cần một callback before_validation để chạy cho đối tượng con đó, nhưng nó sẽ không phải vì nó là một lưu mà bỏ qua xác nhận.has_many: autosave => true skips validation khi lưu con

Cách hay để giải quyết vấn đề này là gì? Và mục đích bỏ qua xác nhận là gì?

Mọi trợ giúp sẽ được đánh giá cao! Cảm ơn!

Trả lời

6

Xác thực làm chạy. Có một giai đoạn xác nhận và một giai đoạn tiết kiệm. AutoSave cố gắng thực hiện hai giai đoạn này cho hai mô hình cùng một lúc. Vì vậy, khi lưu mô hình gốc, mô hình cha được xác nhận hợp lệ và sau đó nó được tự động xác nhận. Sau khi xác nhận hợp lệ, giai đoạn tiết kiệm xảy ra sẽ lưu mô hình gốc và lưu mô hình con (nhưng bỏ qua xác thực). Lý do là vì việc xác thực đã được chạy.

Tôi đã gặp sự cố khi cố gắng xây dựng mô hình con bên trong phụ huynh trong cuộc gọi lại before_save. Do đó, đối tượng liên quan không có ở đó để được xác thực trong giai đoạn xác nhận.

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