Chúng tôi đã gặp phải sự cố thú vị vào hôm nay. Dường như nếu bạn sử dụng toán tử xẻng để nối một thuộc tính chuỗi trên mô hình ActiveRecord, nó không làm cho mô hình bị bẩn. Ví dụ:Ruby on Rails: Sử dụng toán tử xẻng để cập nhật thuộc tính chuỗi trên mô hình không làm cho mô hình bị bẩn
e = Employee.first
e.name << "asdf"
e.name_changed? # returns false
e.changed? # returns false
Điều này có ý nghĩa vì toán tử xẻng cập nhật chuỗi mà không tạo bản sao, trong đó toán tử + = sẽ sao chép chuỗi. Tôi không thấy làm thế nào ActiveRecord có thể có thể biết rằng một cái gì đó thay đổi nếu bạn sử dụng các nhà điều hành xẻng.
Có ai khác nhìn thấy điều này không? Là giải pháp để chỉ sử dụng +=
thay vì <<
khi ghép chuỗi?
Bạn nên gửi báo cáo lỗi cho các thành viên của đường ray nếu bạn chưa có. – rwilliams
không có lỗi nào, nó đã biết và nó yên lặng không thể tránh được – shingara