2010-02-02 28 views
6

Tôi chỉ tham gia vào ActiveRecord và không thể tìm thấy câu trả lời cho câu hỏi của mình. Nếu tôi đang cập nhật các thuộc tính của đối tượng và sau đó gọi save() ... ActiveRecord sẽ lưu vào DB ONLY khi các giá trị mới khác với các giá trị cũ?Hiểu các bản cập nhật ActiveRecord đơn giản trong Rails

Hãy nói rằng tôi làm điều gì đó như thế này:

thing_to_update = Thing.find_or_create_by_code(some_code) 
if thing_to_update.name != some_name 
    thing_to_update.update_attribute(:name, some_name) 
end 

Tôi không muốn làm cuộc gọi bổ sung cho các db nếu tôi không phải vì tôi có khả năng sẽ phải cập nhật rất nhiều đối tượng. Tôi đã cố gắng đọc qua các tài liệu và nó không đề cập đến bất cứ điều gì về việc so sánh các giá trị mới với các giá trị cũ. Am i thiếu cái gì ở đây?

Cảm ơn

Trả lời

4

ActiveRecord sẽ không cập nhật hồ sơ của bạn nếu không có thuộc tính nào thay đổi. Bạn có thể tự xác minh điều này bằng cách gọi hàm thing_to_update.save từ bảng điều khiển và quan sát nhật ký. ActiveRecord sẽ tải bản ghi, nhưng nó sẽ không cố gắng cập nhật nó.

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