Object.update_attribute(:only_one_field, "Some Value")
Object.update_attributes(:field1 => "value", :field2 => "value2", :field3 => "value3")
Cả hai sẽ cập nhật một đối tượng mà không cần phải thông báo rõ ràng cho AR để cập nhật.
API Rails cho biết:
cho update_attribution
Cập nhật một thuộc tính duy nhất và lưu bản ghi mà không cần thông qua quy trình xác nhận thông thường. Điều này đặc biệt hữu ích cho các cờ boolean trên các bản ghi hiện có. Phương thức update_attribution thông thường trong Base được thay thế bằng phương thức này khi mô đun xác nhận được trộn lẫn, theo mặc định.
cho update_attribut
Cập nhật tất cả các thuộc tính từ Hash truyền vào và lưu bản ghi. Nếu đối tượng không hợp lệ, việc lưu sẽ thất bại và sai sẽ được trả về.
Vì vậy, nếu tôi không muốn xác thực đối tượng, tôi nên sử dụng update_attribution. Điều gì sẽ xảy ra nếu tôi có bản cập nhật này trên before_save, nó sẽ stackoverflow?
Câu hỏi của tôi là update_attribution cũng bỏ qua trước khi lưu hoặc chỉ xác nhận.
Ngoài ra, cú pháp chính xác để chuyển một hàm băm đến update_attribut là gì ... hãy xem ví dụ của tôi ở trên cùng.
before_save
cuộc gọi lại). Fe thay vì update_attribute(:discount, 0.1) if amount > 100
bạn có thể làm discount = 0.1 if amount > 100
. update_attribute
các cuộc gọi save
trên đối tượng, không cần thiết trong trường hợp này, vì câu lệnh nằm trong một before_save
cuộc gọi lại và dù sao cũng sẽ được lưu lại. Tôi hy vọng điều đó đúng.
update_attribute
tuyên bố trong mộtbefore_save
cuộc gọi lại? Tôi không thể nghĩ ra một lý do tốt cho việc này.