Sự Khác Nhau Giữa Update, Update_columns, Update_column ... - Viblo
Có thể bạn quan tâm
Là một newbie về Rails, hoặc đang học Rails qua các tutorial có lẽ việc update một record vơi bạn chỉ đơn giản là dùng update_attributes hay update. Nhưng một ngày đẹp trời, bạn được sếp hỏi "update_attribute và update_attributes khác nhau như thế nào?", rồi sau đó lòi đâu ra "em biết update_column không?" Quá choáng váng về số phận, bạn google và nhận ra, cái quái gì chỉ là update mà nhiều hàm đến vậy. Bài viết sau mình xin chỉ ra một số hàm update mình đã google được và phân biệt sự khác nhau giữa chúng.
update(id, attributes)
Đây là public class method bạn gọi trực tiếp từ model class. Có 2 tham số truyền vào là id và 1 hash các attributes. Hàm này sẽ thực hiện update các attributes của record chứa id tương ứng.
# Ví dụ User.update(1, {name: "Le Quang Canh", email: "[email protected]"}) # Vì hash là params nằm cuối nên có thể bỏ {} User.update(1, name: "Le Quang Canh", email: "[email protected]")Để update nhiều hơn 1 record, bạn truyền vào 2 params là 2 mảng id và attributes, trong đó thứ tự phải sắp xếp đúng. Ví dụ
User.update([1,2], [{name: "user1", email: "[email protected]"}, {name: "user2", email: "[email protected]"}])Có một hàm cùng cha khác ông nội với hàm này là update!(id, attributes) chỉ khác 1 chỗ là hàm này sẽ raise exception nếu update không thành công, còn hàm update sẽ return false
update_attributes(attributes)
Hàm này có lẽ đã quá quen thuộc rồi. Nó được gọi từ một object của model class. Hàm thực hiện update tất cả các attributes được truyền vào từ params của object đó nếu pas validate. Ví dụ
user = User.find_by id: 1 user.update_attributes name: "Canh", email: "[email protected]"update_attribute(name, value)
Hàm này cũng được gọi bởi một object của class model Nó chỉ có thể update một attribute của object đó. Tuy nhiên, có một số thứ đặc biệt ở đây:
- Trường được update sẽ bị bỏ qua validate
- Callback vẫn chạy
- updated_at vẫn được cập nhật Ví dụ
update_columns(attributes)
Tương tự như update_attributes. Tuy nhiên, hàm này nó sẽ update trực tiếp vào DB. Và:
- Bỏ qua validate
- Callback không thực thi
- updated_at không được cập nhật Ví dụ
Cũng như update, update_attributes cũng có một hàm tương tự là update_attributes! và khác nhau ở trả về khi update fail
update_column(name, value)
Tương tự như update_column. Cũng như update_columns nó sẽ update trực tiếp vào DB và bỏ qua validate, bỏ qua callback, gọi cập nhật updated_at Ví dụ
user = User.first user.update_column :email, "abc" => trueBài viết này mình đã liệt kê ra một số hàm update trong rails và so sánh sự khác nhau giữa chúng. Về cơ bản thì mục đích cuối cùng vẫn là update 1 hoặc nhiều record. Tuy nhiên tùy vào mục đích cụ thể trong từng trường hợp mà lựa chọn cho mình hàm phù hợp nhất. Nguồn: http://apidock.com/rails/ActiveRecord
Từ khóa » Sự Update
-
Nghĩa Của Từ Update - Từ điển Anh - Việt
-
Trình Khắc Phục Sự Cố Windows Update - Microsoft Support
-
Tải Bản Cập Nhật Mới Windows Nhất - Microsoft Support
-
Hướng Dẫn Cách Cập Nhật Windows 10 Và Khắc Phục Các Sự Cố Khi ...
-
Sự Thật Về Xiao Chao Meng, Tướng Mới Giống Nhân Vật Overwatch ...
-
Cách Khắc Phục Sự Cố Windows Update Khi Cài đặt Windows 11
-
PES Mobile 2021 | EFootball PES 2021 - Konami
-
Lỗi Trong Trình Xem Sự Kiện - "ID20: Windows Update... - Intel
-
Update 1.1.2 :: Planet Coaster Sự Kiện & Thông Báo
-
The Last Early Access Update :: Minion Masters Sự Kiện & Thông Báo
-
News - Liên Minh Huyền Thoại | Trang Chủ Chính Thức