diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2019-01-11 18:01:55 +0900 |
---|---|---|
committer | Ryuta Kamizono <kamipo@gmail.com> | 2019-01-11 18:01:55 +0900 |
commit | 6c6c32463e71af4e3395a691052a89c4c1571acd (patch) | |
tree | 01bb835caa08ba66a17c76ec40813a91fc8907bc /activerecord/lib | |
parent | eb5fef554fde84d36b45191182ed98bd344dc967 (diff) | |
download | rails-6c6c32463e71af4e3395a691052a89c4c1571acd.tar.gz rails-6c6c32463e71af4e3395a691052a89c4c1571acd.tar.bz2 rails-6c6c32463e71af4e3395a691052a89c4c1571acd.zip |
Refactor `bind_attribute` to expand an association to actual attribute
Diffstat (limited to 'activerecord/lib')
-rw-r--r-- | activerecord/lib/active_record/relation.rb | 5 | ||||
-rw-r--r-- | activerecord/lib/active_record/validations/uniqueness.rb | 5 |
2 files changed, 5 insertions, 5 deletions
diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb index ba221a333b..a863227276 100644 --- a/activerecord/lib/active_record/relation.rb +++ b/activerecord/lib/active_record/relation.rb @@ -44,6 +44,11 @@ module ActiveRecord end def bind_attribute(name, value) # :nodoc: + if reflection = klass._reflect_on_association(name) + name = reflection.foreign_key + value = value.read_attribute(reflection.klass.primary_key) unless value.nil? + end + attr = arel_attribute(name) bind = predicate_builder.build_bind_attribute(attr.name, value) yield attr, bind diff --git a/activerecord/lib/active_record/validations/uniqueness.rb b/activerecord/lib/active_record/validations/uniqueness.rb index 19ba2b8cd9..111b6c9a64 100644 --- a/activerecord/lib/active_record/validations/uniqueness.rb +++ b/activerecord/lib/active_record/validations/uniqueness.rb @@ -56,11 +56,6 @@ module ActiveRecord end def build_relation(klass, attribute, value) - if reflection = klass._reflect_on_association(attribute) - attribute = reflection.foreign_key - value = value.attributes[reflection.klass.primary_key] unless value.nil? - end - relation = klass.unscoped comparison = relation.bind_attribute(attribute, value) do |attr, bind| return relation.none! unless bind.boundable? |