Rails 2.3.2 bug? Detecting changed fields...

I have a text field in the database, lets call it log. If I do something like this:

x = MyModel.find(1) x.log << "append some text" x.save

Nothing is saved.

If I do something like this:

x = MyModel.find(1) x.log += "append some text" x.save

It works. Seems like a bug.

See http://ar.rubyonrails.org/classes/ActiveRecord/Dirty.html - if you change things inplace you need to use the foo_will_change! methods

On further testing...

x = MyModel.find(1) x.log << "append some text"

x.changed

=>

x.log

=> "old valueappend some text"

The value is clearly changed in the resident copy of the model, yet it doesn't recognize it as changed.

Meech wrote:

Ah, I see.

Too much work, doesn't feel like it's my job to tell what's changed or will change.

I'll just switch to +=

Frederick Cheung wrote: