Merge pull request #4014 from lest/bypass-preloading-for-ids-reader
bypass preloading for ids_reader
This commit is contained in:
commit
de2306f10c
@ -49,10 +49,18 @@ def ids_reader
|
||||
end
|
||||
else
|
||||
column = "#{reflection.quoted_table_name}.#{reflection.association_primary_key}"
|
||||
relation = scoped
|
||||
|
||||
scoped.select(column).map! do |record|
|
||||
record.send(reflection.association_primary_key)
|
||||
including = (relation.eager_load_values + relation.includes_values).uniq
|
||||
|
||||
if including.any?
|
||||
join_dependency = ActiveRecord::Associations::JoinDependency.new(reflection.klass, including, [])
|
||||
relation = join_dependency.join_associations.inject(relation) do |r, association|
|
||||
association.join_relation(r)
|
||||
end
|
||||
end
|
||||
|
||||
relation.uniq.pluck(column)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -528,6 +528,12 @@ def test_get_ids
|
||||
assert_equal [posts(:welcome).id, posts(:authorless).id].sort, people(:michael).post_ids.sort
|
||||
end
|
||||
|
||||
def test_get_ids_for_has_many_through_with_conditions_should_not_preload
|
||||
Tagging.create!(:taggable_type => 'Post', :taggable_id => posts(:welcome).id, :tag => tags(:misc))
|
||||
ActiveRecord::Associations::Preloader.expects(:new).never
|
||||
posts(:welcome).misc_tag_ids
|
||||
end
|
||||
|
||||
def test_get_ids_for_loaded_associations
|
||||
person = people(:michael)
|
||||
person.posts(true)
|
||||
|
Loading…
Reference in New Issue
Block a user