markdown 当活动记录子对象在Rails中自动保存时

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了markdown 当活动记录子对象在Rails中自动保存时相关的知识,希望对你有一定的参考价值。

#### belongs_to:

1. Assigning an object to a `belongs_to` association does not automatically save the object. It does not save the associated object either.

#### has_one:

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

#### has_many:
1. When you assign an object to a `has_many` association, 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.
2. If either of these saves fails due to validation errors, then the assignment statement returns false and the assignment itself is cancelled.
3. If the parent object (the one declaring the `has_many` association) is unsaved (that is, `new_record?` returns true) then the child objects are not saved. They will automatically when the parent object is saved.
4. If you want to assign an object to a `has_many` association without saving the object, use the `association.build` method.


#### has_and_belongs_to_many:
1. When you assign an object to a has_and_belongs_to_many association, that object is automatically saved 
   (in order to update the join table). If you assign multiple objects in one statement, then they are all saved.
2. If any of these saves fails due to validation errors, then the assignment statement returns false and the assignment 
   itself is cancelled.
3. If the parent object (the one declaring the `has_and_belongs_to_many` association) is unsaved (that is,`new_record`? 
   returns true) then the child objects are not saved when they are added. All unsaved members of the association 
   will automatically be saved when the parent is saved
4. If you want to assign an object to a `has_and_belongs_to_many` association without saving the object, 
   use the `collection.build` method

:autosave
----------

If true, always save the associated object or destroy it if marked for destruction, when saving the parent object. If false, never save or destroy the associated object. By default, only save the associated object if it's a new record.

Note that `accepts_nested_attributes_for` sets `:autosave` to true.

以上是关于markdown 当活动记录子对象在Rails中自动保存时的主要内容,如果未能解决你的问题,请参考以下文章

Rails获取上一个和下一个活动记录对象的最佳方法

Rails 记录 VIP 用户活动

从 SQL 到 Rails 活动记录

Rails 4+ 最佳实践:删除父项同时保留子项

Rails 4 - 如何在活动记录查询中为包含()和连接()提供别名

如何要求在 Rails 之外工作的活动记录