diff options
author | Angelo Capilleri <capilleri@yahoo.com> | 2012-10-14 23:01:59 +0200 |
---|---|---|
committer | Angelo Capilleri <capilleri@yahoo.com> | 2012-10-14 23:09:29 +0200 |
commit | 08927cf1f2ebf7425418f4ee97a3dfb80abe978e (patch) | |
tree | e747353000c07288ff5f269477482651f5ae3942 /activerecord | |
parent | ae61c03891e2190620fb15b8f4c833ebf6993dc1 (diff) | |
download | rails-08927cf1f2ebf7425418f4ee97a3dfb80abe978e.tar.gz rails-08927cf1f2ebf7425418f4ee97a3dfb80abe978e.tar.bz2 rails-08927cf1f2ebf7425418f4ee97a3dfb80abe978e.zip |
refactoring of uniqueness validate_each
get scope_value only one time dependig on reflection
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/lib/active_record/validations/uniqueness.rb | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/validations/uniqueness.rb b/activerecord/lib/active_record/validations/uniqueness.rb index 5dece1cb36..5fa6a0b892 100644 --- a/activerecord/lib/active_record/validations/uniqueness.rb +++ b/activerecord/lib/active_record/validations/uniqueness.rb @@ -26,11 +26,12 @@ module ActiveRecord relation = relation.and(table[finder_class.primary_key.to_sym].not_eq(record.send(:id))) if record.persisted? Array(options[:scope]).each do |scope_item| - scope_value = record.read_attribute(scope_item) reflection = record.class.reflect_on_association(scope_item) if reflection scope_value = record.send(reflection.foreign_key) scope_item = reflection.foreign_key + else + scope_value = record.read_attribute(scope_item) end relation = relation.and(table[scope_item].eq(scope_value)) end |