<< does it force a save?

my tests seem to imply that << forces an insert of the parent and child
records in a has_many relationship when both are newly created objects.

for example,

Controller code:

xy=XY.new
pc=PC.new
xy.addPC(pc)

Model code:

Class XY < ActiveRecord…
def addPC(pc)
self.controls<<pc
end
end

where XY has a “has_many” association with PC and PC has a “belongs_to”
XY

I note that two INSERTs are performed into the tables behind PC and XY
models as a result of the call to addPC() but I’m not issuing a .save
anywhere in my code.

Is this normal behaviour?

Found the answer in the Rails API site:
* Adding an object to a collection (has_many or
has_and_belongs_to_many) automatically saves that object, except if the
parent object (the owner of the collection) is not yet stored in the
database.

In my case the parent object (xy) had been saved through another
association :slight_smile: thus causing an automatic save of the pc object.