1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Merge pull request #25941 from kamipo/finder_methods_uses_load_target

`FinderMethods` uses `records` (`load_target`) when `loaded?` is true
This commit is contained in:
Rafael França 2016-07-28 10:39:04 -03:00 committed by GitHub
commit b37bd3d52f
3 changed files with 7 additions and 5 deletions

View file

@ -29,7 +29,7 @@ module ActiveRecord
# instantiation of the actual post records.
class CollectionProxy < Relation
delegate(*(ActiveRecord::Calculations.public_instance_methods - [:count]), to: :scope)
delegate :find_nth, :exists?, :update_all, :arel, to: :scope
delegate :exists?, :update_all, :arel, to: :scope
def initialize(klass, association) #:nodoc:
@association = association

View file

@ -514,7 +514,7 @@ module ActiveRecord
def find_take
if loaded?
@records.first
records.first
else
@take ||= limit(1).records.first
end
@ -531,7 +531,7 @@ module ActiveRecord
MSG
end
if loaded?
@records[index]
records[index]
else
offset ||= offset_index
@offsets[offset + index] ||= find_nth_with_limit_and_offset(index, 1, offset: offset).first
@ -557,7 +557,7 @@ module ActiveRecord
def find_nth_from_last(index)
if loaded?
@records[-index]
records[-index]
else
relation = if order_values.empty? && primary_key
order(arel_attribute(primary_key).asc)
@ -578,7 +578,7 @@ module ActiveRecord
def find_nth_with_limit_and_offset(index, limit, offset:) # :nodoc:
if loaded?
@records[index, limit]
records[index, limit]
else
index += offset
find_nth_with_limit(index, limit)

View file

@ -254,6 +254,8 @@ class AssociationProxyTest < ActiveRecord::TestCase
test "first! works on loaded associations" do
david = authors(:david)
assert_equal david.posts.first, david.posts.reload.first!
assert david.posts.loaded?
assert_no_queries { david.posts.first! }
end
def test_reset_unloads_target