save returns Mysql::Error: Duplicate entry

Hi all,

I use save on an ActiveRecord object to insert or update it. I expect save to insert a new object in the database when I didn't assign the id to the object and update the object when I assigned an id to it. That's what I think the documentation tells me:     * No record exists: Creates a new record with values matching those of the object attributes.     * A record does exist: Updates the record with values matching those of the object attributes.

Shouldn't it update the record when the id already exists or have I misunderstood how save works?

regards, Stijn

yes, you misunderstood this detail when you create a new model object with eg User.new, Rails uses (I assume) an internal flag to determine, that this is a new record. If you load a record with User.find (eg) this flag is off.

So that's a Rails internal state, setting the ID field has nothing to do with it, it only depends on the way the object was created.