diff options
author | Rafael França <rafaelmfranca@gmail.com> | 2016-08-18 23:14:27 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-08-18 23:14:27 -0300 |
commit | 085166d59a039bce0e45979a2dec25160bc80f14 (patch) | |
tree | 1d72c67eb6289f6dd2ab35b3f5ec4acb154b95b7 /activerecord/lib/active_record/relation | |
parent | c2af081c4f566560e3caab0a8c10893093b9e826 (diff) | |
parent | 592e6b7e894e0fff07ab8233fce4bf77968ee8b6 (diff) | |
download | rails-085166d59a039bce0e45979a2dec25160bc80f14.tar.gz rails-085166d59a039bce0e45979a2dec25160bc80f14.tar.bz2 rails-085166d59a039bce0e45979a2dec25160bc80f14.zip |
Merge pull request #26200 from kamipo/remove_unnecessary_ordinal_methods
Remove unnecessary ordinal methods for collection association
Diffstat (limited to 'activerecord/lib/active_record/relation')
-rw-r--r-- | activerecord/lib/active_record/relation/finder_methods.rb | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/relation/finder_methods.rb b/activerecord/lib/active_record/relation/finder_methods.rb index ff43def901..376867675b 100644 --- a/activerecord/lib/active_record/relation/finder_methods.rb +++ b/activerecord/lib/active_record/relation/finder_methods.rb @@ -97,7 +97,7 @@ module ActiveRecord # Person.take(5) # returns 5 objects fetched by SELECT * FROM people LIMIT 5 # Person.where(["name LIKE '%?'", name]).take def take(limit = nil) - limit ? limit(limit).to_a : find_take + limit ? find_take_with_limit(limit) : find_take end # Same as #take but raises ActiveRecord::RecordNotFound if no record @@ -526,13 +526,21 @@ module ActiveRecord end end + def find_take_with_limit(limit) + if loaded? + records.take(limit) + else + limit(limit).to_a + end + end + def find_nth(index) @offsets[offset_index + index] ||= find_nth_with_limit(index, 1).first end def find_nth_with_limit(index, limit) if loaded? - records[index, limit] + records[index, limit] || [] else relation = if order_values.empty? && primary_key order(arel_attribute(primary_key).asc) |