Notification.update_all(email: true)
là câu trả lời cơ bản.
Bạn không phải "lặp lại" mỗi lần bằng cách viết khối của riêng bạn: bạn có thể cho phép bản ghi hoạt động thực hiện công việc khó khăn cho bạn - đây là ví dụ về nơi bạn có một mảng id và bạn muốn cập nhật email của họ (i về cơ bản mất ví dụ này trực tiếp từ một trong các bộ điều khiển của tôi):
@notifications = Notification.where(id: [1,2,3,2,1,2]).update_all(email: true)
Edit: folks xem ra cho sql injection không bao gồm một params [: notification_ids] trong "ở đâu" phương pháp của bạn với một nguyên chuỗi mà không thoát hoặc bạn sẽ bị tấn công tiêm sql; hoặc được an toàn và sử dụng một băm.
Cảm ơn, đây là một cách hiệu quả hơn để thực hiện điều này hơn là lặp qua từng phần tử. – Ryan
@Ryan nó hiệu quả hơn nhiều nhưng việc thiếu callback khiến cho nó trở nên khó khăn trong kinh nghiệm của tôi. Một trong những trường hợp sử dụng phổ biến nhất (ngoài dữ liệu dọn dẹp, vv trong phát triển) là các thực thể cho phép/vô hiệu hóa khối lượng. Thông thường, việc cập nhật dữ liệu như vậy đáng chú ý khi thông báo cho người dùng của bạn mà tôi thường thực hiện qua các cuộc gọi lại;) –