aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
diff options
context:
space:
mode:
authorJon Moss <me@jonathanmoss.me>2016-06-21 16:38:24 -0400
committerJon Moss <me@jonathanmoss.me>2016-06-21 16:38:24 -0400
commitbe8b2ddbcb66babd768ee756604e60e71060ecd9 (patch)
tree3fed212c949a5b7a5e1446f94485d86768ac0614 /activerecord/lib
parent1a4474c2c78c9d658b6399472c5eb8f1aae44033 (diff)
parent7ea502ae141fc26b736c7a73bdf7a676b1f9fc87 (diff)
downloadrails-be8b2ddbcb66babd768ee756604e60e71060ecd9.tar.gz
rails-be8b2ddbcb66babd768ee756604e60e71060ecd9.tar.bz2
rails-be8b2ddbcb66babd768ee756604e60e71060ecd9.zip
Merge pull request #25458 from taboularasa/taboularasa/update-docs-ActiveRecord__AttributeSet__YAMLEncoder#decode-for-pr
better docs for ActiveRecord::AttributeSet::YAMLEncoder#decode
Diffstat (limited to 'activerecord/lib')
-rw-r--r--activerecord/lib/active_record/attribute_set/yaml_encoder.rb17
1 files changed, 17 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/attribute_set/yaml_encoder.rb b/activerecord/lib/active_record/attribute_set/yaml_encoder.rb
index 6208048231..fd063555ec 100644
--- a/activerecord/lib/active_record/attribute_set/yaml_encoder.rb
+++ b/activerecord/lib/active_record/attribute_set/yaml_encoder.rb
@@ -7,6 +7,11 @@ module ActiveRecord
@default_types = default_types
end
+ # Populate +coder+ with 'concise_attributes' using +attribute_set+.
+ #
+ # If any attribute's name matches a +default_types+ key, then the
+ # attribute will be cast by passing +nil+ to
+ # ActiveRecord::Attribute#with_type.
def encode(attribute_set, coder)
coder['concise_attributes'] = attribute_set.each_value.map do |attr|
if attr.type.equal?(default_types[attr.name])
@@ -17,6 +22,18 @@ module ActiveRecord
end
end
+ # Decode a previously encoded +coder+.
+ #
+ # +coder+ should be the result of previously encoding an Active Record
+ # model, using #encode.
+ #
+ # If +coder+ contains an 'attributes' key, then #decode returns the value
+ # under the 'attributes' key.
+ #
+ # Otherwise, #decode will build an attributes hash from the provided coder,
+ # using its value under 'concise_attributes', while casting any nil types
+ # using default_types. The resulting hash is used to return a new
+ # ActiveRecord::AttributeSet.
def decode(coder)
if coder['attributes']
coder['attributes']