- Assigning an object to a
belongs_toassociation does not automatically save the object. It does not save the associated object either.
- When you assign an object to a
has_oneassociation, 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.
- When you assign an object to a
has_manyassociation, that object is automatically saved (in order to update its foreign key). If you assign multiple objects in one statement, then they are all saved. - 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_manyassociation) 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.