Мы столкнулись с интересной проблемой сегодня. Кажется, что если вы используете оператор совка для объединения строкового атрибута в модели ActiveRecord, это не делает модель грязной. Например:
e = Employee.first
e.name << "asdf"
e.name_changed? # returns false
e.changed? # returns false
Это имеет смысл, так как оператор лопатки обновляет строку, не копируя ее, где оператор + = создаст копию строки. Я не понимаю, как ActiveRecord мог знать, что что-то изменилось, если вы используете оператор лопатой.
Кто-нибудь еще видел это? Является ли решение просто использовать +=
вместо <<
при объединении строк?