今天我們遇到了一個有趣的問題。看起來,如果您使用shovel運算符連接ActiveRecord模型中的字符串屬性,它不會使模型變髒。例如:Ruby on Rails:使用鏟子操作員更新模型上的字符串屬性不會使模型變髒
e = Employee.first
e.name << "asdf"
e.name_changed? # returns false
e.changed? # returns false
這是有道理的,因爲鏟運營商更新字符串未做它的一個副本,其中+ =運算符將字符串的副本。我沒有看到ActiveRecord如何使用鏟運算符可能知道某些更改。
有沒有其他人看到過這個?連接字符串時,解決方案是使用+=
而不是<<
?
如果您還沒有提交錯誤報告,請向rails專員提交。 – rwilliams 2010-11-09 20:29:17
不,它不是一個bug,它已經知道了,它不可能避免 – shingara 2010-11-10 09:48:29