2010-11-19 27 views
10

Có một specifier validate có thể được sử dụng trực tiếp trên hiệp hội (xem 4.1.2.12 tại Rails Guide này và cũng là một validates_associated (xem 3.2 tại Rails Guide đó). đâu cả khác nhau?Validate vs validates_associated

+0

Dưới đây là [cập nhật liên kết đến mục Hướng dẫn Rails trên validates_associated] (http://guides.rubyonrails.org/active_record_validations.html#validates-associated) – stereoscott

Trả lời

2

Họ cả hai xác nhận các mô hình liên quan (s).

sự khác biệt là người đầu tiên là một lựa chọn về hiệp hội (ví dụ belongs_to, has_many, vv). Ví dụ: bạn xác định 'hành xác' trong hiệp hội của bạn.

Trong ví dụ "Tác giả có nhiều sách" cổ điển, giả sử bạn bật belongs_to :author, :validate => true trên mô hình Sách. Mỗi khi bạn xác thực mô hình Sách, Tác giả được liên kết cũng phải hợp lệ.

Khác là quy tắc xác thực riêng biệt mà bạn có thể thêm vào các xác thực khác của mình. Vì vậy, trong trường hợp này, bạn cho phép xác nhận hợp lệ đối tượng liên kết cùng với các quy tắc xác thực khác.

Điều này có thể hoạt động theo cách khác. Trong tác giả: has_many :books ; validates_associated :books. Khi bạn xác thực đối tượng Tác giả, tất cả các sách đều được xác thực.

+1

Để sử dụng validates_associated mà không cần xác thực kép, bạn phải tắt một cách rõ ràng: xác nhận hợp lệ. Tôi vẫn tự hỏi tại sao validates_associated tồn tại nếu nó làm điều tương tự như mặc định. Bất kỳ ý tưởng? –

+3

Tôi có cùng một câu hỏi giống như @zardox nhưng tôi không chắc điều này có thực sự trả lời câu hỏi đó không. Bạn có thể giải thích sự khác biệt thực sự giữa hai phương thức khác với vị trí mà chúng được khai báo không. Bạn có gợi ý rằng trong trường hợp đầu tiên, cuốn sách thực sự tạo ra một xác nhận ngược lại cho tác giả và buộc tác giả không hợp lệ nếu sách không hợp lệ? Điều này dường như không được gói gọn. –

+1

Tôi vẫn còn bối rối. Sự khác biệt giữa has_many: books,: validate => true và has_many: books; validates_associated: books ?? (Mô tả của bạn về sự khác biệt khiến chúng giống như chúng giống nhau, ngược lại với cách giải thích chúng khác nhau như thế nào.) –

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