Skip to content
Permalink
Browse files
remove deprecated support to preload instance-dependent associaitons.
  • Loading branch information
senny committed Jan 5, 2015
1 parent a076256 commit 4ed9797
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 32 deletions.
@@ -1,3 +1,7 @@
* Remove deprecated support to preload instnace-dependent associations.

*Yves Senn*

* Remove deprecated support for PostgreSQL ranges with exclusive lower bounds.

*Yves Senn*
@@ -343,13 +343,10 @@ def check_preloadable!
return unless scope

if scope.arity > 0
ActiveSupport::Deprecation.warn(<<-MSG.squish)
raise ArgumentError, <<-MSG.squish
The association scope '#{name}' is instance dependent (the scope
block takes an argument). Preloading happens before the individual
instances are created. This means that there is no instance being
passed to the association scope. This will most likely result in
broken or incorrect behavior. Joining, Preloading and eager loading
of these associations is deprecated and will be removed in the future.
block takes an argument). Preloading instance dependent scopes is
not supported.
MSG
end
end
@@ -826,18 +826,6 @@ def test_limited_eager_with_numeric_in_association
)
end

def test_preload_with_interpolation
assert_deprecated do
post = Post.includes(:comments_with_interpolated_conditions).find(posts(:welcome).id)
assert_equal [comments(:greetings)], post.comments_with_interpolated_conditions
end

assert_deprecated do
post = Post.joins(:comments_with_interpolated_conditions).find(posts(:welcome).id)
assert_equal [comments(:greetings)], post.comments_with_interpolated_conditions
end
end

def test_polymorphic_type_condition
post = Post.all.merge!(:includes => :taggings).find(posts(:thinking).id)
assert post.taggings.include?(taggings(:thinking_general))
@@ -1294,23 +1282,22 @@ def test_deep_including_through_habtm
assert_equal pets(:parrot), Owner.including_last_pet.first.last_pet
end

test "include instance dependent associations is deprecated" do
test "preloading and eager loading of instance dependent associations is not supported" do
message = "association scope 'posts_with_signature' is"
assert_deprecated message do
begin
Author.includes(:posts_with_signature).to_a
rescue NoMethodError
# it's expected that preloading of this association fails
end
error = assert_raises(ArgumentError) do
Author.includes(:posts_with_signature).to_a
end
assert_match message, error.message

assert_deprecated message do
Author.preload(:posts_with_signature).to_a rescue NoMethodError
error = assert_raises(ArgumentError) do
Author.preload(:posts_with_signature).to_a
end
assert_match message, error.message

assert_deprecated message do
error = assert_raises(ArgumentError) do
Author.eager_load(:posts_with_signature).to_a
end
assert_match message, error.message
end

test "preloading readonly association" do
@@ -72,10 +72,6 @@ def greeting
through: :author_with_address,
source: :author_address_extra

has_many :comments_with_interpolated_conditions,
->(p) { where "#{"#{p.aliased_table_name}." rescue ""}body = ?", 'Thank you for the welcome' },
:class_name => 'Comment'

has_one :very_special_comment
has_one :very_special_comment_with_post, -> { includes(:post) }, :class_name => "VerySpecialComment"
has_one :very_special_comment_with_post_with_joins, -> { joins(:post).order('posts.id') }, class_name: "VerySpecialComment"

0 comments on commit 4ed9797

Please sign in to comment.