diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2013-06-14 13:17:42 -0700 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2013-06-14 13:17:42 -0700 |
commit | f7114754b12f27a953a8e511128b394a4c2e85e5 (patch) | |
tree | 01ad5f42bfa7494d19341312fcf996ee1df0d2ff | |
parent | 067e1505d4e054df566e065f4faf11ee4b430a3d (diff) | |
parent | e720b50fb1ff841970b2f1198996144c35b48461 (diff) | |
download | rails-f7114754b12f27a953a8e511128b394a4c2e85e5.tar.gz rails-f7114754b12f27a953a8e511128b394a4c2e85e5.tar.bz2 rails-f7114754b12f27a953a8e511128b394a4c2e85e5.zip |
Merge pull request #10898 from dmitry/find_first_refactor_duplication
Refactored ActiveRecord `first` method to get rid of duplication.
-rw-r--r-- | activerecord/lib/active_record/relation/finder_methods.rb | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/activerecord/lib/active_record/relation/finder_methods.rb b/activerecord/lib/active_record/relation/finder_methods.rb index 1550d702a6..3ea3c33fcc 100644 --- a/activerecord/lib/active_record/relation/finder_methods.rb +++ b/activerecord/lib/active_record/relation/finder_methods.rb @@ -124,11 +124,7 @@ module ActiveRecord # def first(limit = nil) if limit - if order_values.empty? && primary_key - order(arel_table[primary_key].asc).limit(limit).to_a - else - limit(limit).to_a - end + find_first_with_limit(order_values, limit) else find_first end @@ -358,12 +354,15 @@ module ActiveRecord if loaded? @records.first else - @first ||= - if with_default_scope.order_values.empty? && primary_key - order(arel_table[primary_key].asc).limit(1).to_a.first - else - limit(1).to_a.first - end + @first ||= find_first_with_limit(with_default_scope.order_values, 1).first + end + end + + def find_first_with_limit(order_values, limit) + if order_values.empty? && primary_key + order(arel_table[primary_key].asc).limit(limit).to_a + else + limit(limit).to_a end end |