12/08/2018, 13:50

Nested attributes with multiple object

Nested attributes là gì? Nested attributes là một tính năng nó cho phép lưu thuộc tính của bản ghi này thông qua bản ghi khác (associated records). Theo mặc định nested attributes cập nhật thuộc tính được tắt và có thể kích hoạt nó bằng cách sử dụng: accepts_nested_attributes_for ...

  1. Nested attributes là gì?
    Nested attributes là một tính năng nó cho phép lưu thuộc tính của bản ghi này thông qua bản ghi khác (associated records). Theo mặc định nested attributes cập nhật thuộc tính được tắt và có thể kích hoạt nó bằng cách sử dụng: accepts_nested_attributes_for [class_method] Tùy chọn tự động lưu được tự động kích hoạt trên mỗi accepts_nested_attributes_for đó được sử dụng.
  2. Cách sử dụng

app/model/word.rb

Screenshot from 2016-09-17 10:19:21.png

:reject_if proc để bỏ qua bất cứ một record mới nếu không thỏa mãn điều kiện.

app/model/answer.rb

Screenshot from 2016-09-17 10:19:42.png

Create các thuộc tính answers thông qua 1 mảng thuộc tính của word

Screenshot from 2016-09-17 10:28:17.png

Khi update các thuộc tính answers thông qua 1 mảng thuộc tính của word, hash answers phải chứa khóa id, nếu không thì nó sẽ tạo mới

Theo mặc định associated records được bảo vệ không destroy. Nếu muốn destroy bất kỳ associated records thông qua attributes hash thì phải kích hoạt sử dụng tùy chọn :allow_destroy. Khi đó ta phải thêm khóa _destroy vào attributes hash cùng với giá trị là true thì sẽ destroy associated model

Lưu ý: Model sẽ không bị destroy cho đến khi save

Model không được destroy trừ khi chỉ định id của nó trong hash

Nếu muốn xác nhận một record có được liên kết với record cha, có thể sử dụng validates_presence_of [method] và :inverse_of [key]

0