2012-10-09 21 views
5

Tôi đang cố cập nhật thuộc tính được tuần tự hóa với một số dữ liệu trong cuộc gọi lại after_save trên cùng một đối tượng.Cập nhật thuộc tính tuần tự mà không gọi lại trong Rails

Tôi không muốn bất kỳ cuộc gọi lại nào được kích hoạt, vì nhiều lý do khác nhau (tác dụng phụ, vòng lặp vô hạn). Cách điển hình để đạt được điều này là sử dụng update_column, nhưng rất tiếc là không hoạt động với các thuộc tính được tuần tự hóa.

Tôi biết rằng tôi có thể đặt điều kiện trên callback để tránh bị gọi lại, nhưng cảm thấy rằng phải có dạng update_attribute không kích hoạt cuộc gọi lại nhưng vẫn hoạt động với thuộc tính được tuần tự hóa.

Mọi đề xuất?

Trả lời

1

Đây là những gì tôi làm

serialize :properties, Hash 

def update_property(name, value) 
    self.properties[name] = value 
    update_column(:properties, properties) 
end 
0

Bạn cần phải mã băm trước khi cập nhật cột:

update_column(:properties, self.class.serialized_attributes['properties'].dump(properties)) 
+0

Có thể cần phải tải lại dụ sau – Swards

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