aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel/lib/active_model/attribute_assignment.rb
diff options
context:
space:
mode:
authorSean Griffin <sean@seantheprogrammer.com>2017-07-17 07:10:27 -0600
committerGitHub <noreply@github.com>2017-07-17 07:10:27 -0600
commit404eceba8c8f0951407c2508567f6abefec76e4c (patch)
treecb8c690084083b6aee4a70ad29c24c0050f88bed /activemodel/lib/active_model/attribute_assignment.rb
parente505bc8acd4448030fd4d2f85796bdb61d45a5b1 (diff)
parentfbade51248ea48db87703ba7418badbd3ed85e36 (diff)
downloadrails-404eceba8c8f0951407c2508567f6abefec76e4c.tar.gz
rails-404eceba8c8f0951407c2508567f6abefec76e4c.tar.bz2
rails-404eceba8c8f0951407c2508567f6abefec76e4c.zip
Merge branch 'master' into make-reverse-merge-bang-order-consistent
Diffstat (limited to 'activemodel/lib/active_model/attribute_assignment.rb')
-rw-r--r--activemodel/lib/active_model/attribute_assignment.rb13
1 files changed, 8 insertions, 5 deletions
diff --git a/activemodel/lib/active_model/attribute_assignment.rb b/activemodel/lib/active_model/attribute_assignment.rb
index 7dad3b6dff..aa931119ff 100644
--- a/activemodel/lib/active_model/attribute_assignment.rb
+++ b/activemodel/lib/active_model/attribute_assignment.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require "active_support/core_ext/hash/keys"
module ActiveModel
@@ -19,15 +21,15 @@ module ActiveModel
# cat = Cat.new
# cat.assign_attributes(name: "Gorby", status: "yawning")
# cat.name # => 'Gorby'
- # cat.status => 'yawning'
+ # cat.status # => 'yawning'
# cat.assign_attributes(status: "sleeping")
# cat.name # => 'Gorby'
- # cat.status => 'sleeping'
+ # cat.status # => 'sleeping'
def assign_attributes(new_attributes)
if !new_attributes.respond_to?(:stringify_keys)
raise ArgumentError, "When assigning attributes, you must pass a hash as an argument."
end
- return if new_attributes.nil? || new_attributes.empty?
+ return if new_attributes.empty?
attributes = new_attributes.stringify_keys
_assign_attributes(sanitize_for_mass_assignment(attributes))
@@ -42,8 +44,9 @@ module ActiveModel
end
def _assign_attribute(k, v)
- if respond_to?("#{k}=")
- public_send("#{k}=", v)
+ setter = :"#{k}="
+ if respond_to?(setter)
+ public_send(setter, v)
else
raise UnknownAttributeError.new(self, k)
end