- Assigning an object to a belongs_to association does not automatically save the object. It does not save the associated object either.
- When you assign an object to a has_one association, that object is automatically saved (in order to update its foreign key).
- In addition, any object being replaced is also automatically saved, because its foreign key will change too
- If either of these saves fails due to validation errors, then the assignment statement returns false and the assignment itself is cancelled.
- If the parent object (the one declaring the
has_oneassociation) is unsaved (that is, new_record? returns true) then the child objects are not saved. They will automatically when the parent object is saved. - If you want to assign an object to a has_one association without saving the object, use the
association.buildmethod.