提交 99c741e3 编写于 作者: A Alexey Muranov

Document nested attributes as hash of hashes

Document the possibility to use a hash of hashes for nested attributes for a one-to-many association (in addition to the documented possibility to use an array of hashes).
上级 672ffd4c
...@@ -90,8 +90,9 @@ class TooManyRecords < ActiveRecordError ...@@ -90,8 +90,9 @@ class TooManyRecords < ActiveRecordError
# accepts_nested_attributes_for :posts # accepts_nested_attributes_for :posts
# end # end
# #
# You can now set or update attributes on an associated post model through # You can now set or update attributes on the associated posts through
# the attribute hash. # an attribute hash for a member: include the key +:posts_attributes+
# with an array of hashes of post attributes as a value.
# #
# For each hash that does _not_ have an <tt>id</tt> key a new record will # For each hash that does _not_ have an <tt>id</tt> key a new record will
# be instantiated, unless the hash also contains a <tt>_destroy</tt> key # be instantiated, unless the hash also contains a <tt>_destroy</tt> key
...@@ -183,6 +184,29 @@ class TooManyRecords < ActiveRecordError ...@@ -183,6 +184,29 @@ class TooManyRecords < ActiveRecordError
# member.save # member.save
# member.reload.posts.length # => 1 # member.reload.posts.length # => 1
# #
# Nested attributes for an associated collection can also be passed in
# the form of a hash of hashes instead of an array of hashes:
#
# Member.create(name: 'joe',
# posts_attributes: { first: { title: 'Foo' },
# second: { title: 'Bar' } })
#
# has the same effect as
#
# Member.create(name: 'joe',
# posts_attributes: [ { title: 'Foo' },
# { title: 'Bar' } ])
#
# The keys of the hash which is the value for +:posts_attributes+ are
# ignores in this case.
# However, it is not allowed to use +'id'+ or +:id+ for one of
# such keys, otherwise the hash will be wrapped in an array and
# interpreted as an attribute hash for a single post.
#
# Passing attributes for an associated collection in the form of a hash
# of hashes can be used with hashes generated from HTTP/HTML parameters,
# where there maybe no natural way to submit an array of hashes.
#
# === Saving # === Saving
# #
# All changes to models, including the destruction of those marked for # All changes to models, including the destruction of those marked for
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册