Rails 2.3.2 bug? Detecting changed fields


#1

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.


#2

On Mar 31, 4:33 pm, Meech removed_email_address@domain.invalid wrote:

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


#3

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 +=


#4

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.