Skip to content

Commit

Permalink
Merge pull request rails#36985 from anmolarora/fix-take-memoization
Browse files Browse the repository at this point in the history
Clear ActiveRecord object memoized by take
  • Loading branch information
matthewd authored Aug 20, 2019
2 parents 04cfbc8 + 2a65310 commit ebd7f2a
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 1 deletion.
1 change: 1 addition & 0 deletions activerecord/lib/active_record/relation.rb
Original file line number Diff line number Diff line change
Expand Up @@ -641,6 +641,7 @@ def reset
@to_sql = @arel = @loaded = @should_eager_load = nil
@records = [].freeze
@offsets = {}
@take = nil
self
end

Expand Down
1 change: 0 additions & 1 deletion activerecord/test/cases/relation/where_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -390,7 +390,6 @@ def test_where_with_relation_on_has_one_association
assert_equal author_addresses(:david_address), author_address
end


def test_where_on_association_with_select_relation
essay = Essay.where(author: Author.where(name: "David").select(:name)).take
assert_equal essays(:david_modest_proposal), essay
Expand Down
26 changes: 26 additions & 0 deletions activerecord/test/cases/relations_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2050,6 +2050,32 @@ def test_relation_with_private_kernel_method
assert_equal [accounts(:signals37)], sub_accounts.available
end

def test_where_with_take_memoization
5.times do |idx|
Post.create!(title: idx.to_s, body: idx.to_s)
end

posts = Post.all
first_post = posts.take
third_post = posts.where(title: "3").take

assert_equal "3", third_post.title
assert_not_equal first_post.object_id, third_post.object_id
end

def test_find_by_with_take_memoization
5.times do |idx|
Post.create!(title: idx.to_s, body: idx.to_s)
end

posts = Post.all
first_post = posts.take
third_post = posts.find_by(title: "3")

assert_equal "3", third_post.title
assert_not_equal first_post.object_id, third_post.object_id
end

test "#skip_query_cache!" do
Post.cache do
assert_queries(1) do
Expand Down

0 comments on commit ebd7f2a

Please sign in to comment.