Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
|
@@ -18,6 +18,10 @@ module ActiveRecord | ||
# Note that it also means that associations marked for destruction won't | # Note that it also means that associations marked for destruction won't | ||
# be destroyed directly. They will however still be marked for destruction. | # be destroyed directly. They will however still be marked for destruction. | ||
# | # | ||
# Do note that <tt>:autosave => false</tt> is not same as not declaring <tt>:autosave</tt> | |||
# option. When <tt>:autosave</tt> option is not declared then it works in | |||
# theoreticall <tt>:new_only</tt> mode. Look at has_many example discused below for details. | |||
# | |||
# === One-to-one Example | # === One-to-one Example | ||
# | # | ||
# class Post | # class Post | ||
|
@@ -57,27 +61,45 @@ module ActiveRecord | ||
# | # | ||
# === One-to-many Example | # === One-to-many Example | ||
# | # | ||
# When <tt>autosave</tt> is not declared then also children will get saved when parent is saved | |||
# in certain conditions. | |||
# | |||
# Consider a Post model with many Comments: | # Consider a Post model with many Comments: | ||
# | # | ||
# class Post | # class Post | ||
# has_many :comments, :autosave => true | # has_many :comments # :autosave option is no declared | ||
# end | # end | ||
# | # | ||
# Saving changes to the parent and its associated model can now be performed | # post = Post.new(:title => 'ruby rocks') | ||
# automatically _and_ atomically: | # post.comments.build(:body => 'hello world') | ||
# post.save #=> will save both post and comment | |||
# | # | ||
# post = Post.find(1) | # post = Post.create(:title => 'ruby rocks') | ||
# post.title # => "The current global position of migrating ducks" | # post.comments.build(:body => 'hello world') | ||
# post.comments.first.body # => "Wow, awesome info thanks!" | # post.save #=> will save both post and comment | ||
# post.comments.last.body # => "Actually, your article should be named differently." | |||
# | # | ||
# post.title = "On the migration of ducks" | # post = Post.create(:title => 'ruby rocks') | ||
# post.comments.last.body = "Actually, your article should be named differently. [UPDATED]: You are right, thanks." | # post.comments.create(:body => 'hello world') | ||
# post.save #=> will save both post and comment | |||
# | # | ||
# post.save | # post = Post.create(:title => 'ruby rocks') | ||
# post.reload | # post.comments.build(:body => 'hello world') | ||
# post.title # => "On the migration of ducks" | # post.comments[0].body = 'hi everyone' | ||
# post.comments.last.body # => "Actually, your article should be named differently. [UPDATED]: You are right, thanks." | # post.save #=> will save both post and comment and comment will have 'hi everyone' | ||
# | |||
# In the above cases even without <tt>autosave</tt> option children got updated. | |||
# | |||
# class Post | |||
# has_many :comments, :autosave => true | |||
# end | |||
# | |||
# <tt>:autosave</tt> declaration is required if an attempt is made to change an existing | |||
# associatin in memory. | |||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
vesan
Contributor
|
|||
# | |||
# post = Post.create(:title => 'ruby rocks') | |||
# post.comments.create(:body => 'hello world') | |||
# post.comments[0].body = 'hi everyone' | |||
# post.save #=> will save both post and comment and comment will have 'hi everyone' | |||
# | # | ||
# Destroying one of the associated models members, as part of the parent's | # Destroying one of the associated models members, as part of the parent's | ||
# save action, is as simple as marking it for destruction: | # save action, is as simple as marking it for destruction: | ||
|
@@ -125,6 +147,8 @@ module ActiveRecord | ||
# post = Post.find(1) | # post = Post.find(1) | ||
# post.author.name = '' | # post.author.name = '' | ||
# post.save(:validate => false) # => true | # post.save(:validate => false) # => true | ||
# | |||
# Note that validation will be perfomend even if <tt>autosave</tt> option is not declared. | |||
module AutosaveAssociation | module AutosaveAssociation | ||
extend ActiveSupport::Concern | extend ActiveSupport::Concern | ||
|
|
||
|
1 comment
on commit 06af291
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There's a typo. "associatin" should be "association".
There's a typo. "associatin" should be "association".