Permalink
Browse files

remove deprecated support to preload instance-dependent associaitons.

  • Loading branch information...
senny committed Jan 5, 2015
1 parent a076256 commit 4ed97979d14c5e92eb212b1a629da0a214084078
@@ -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.