提交 a59a4fbd 编写于 作者: S Sean Griffin

Never pass `nil` to `order`

This is part of a refactoring to make it easier to allow `order` to use
sanitize like just about everything else on relation. The deleted test
doesn't give any reasoning as to why passing `nil` to `order` needs to
be supported, and it's rather nonsensical. I can almost see allowing an
empty string being passed (though I'm tempted to just disallow it...)
上级 38061a7b
......@@ -134,7 +134,10 @@ def build_scope
else
scope.joins!(reflection_scope.joins_values)
end
scope.order! preload_values[:order] || values[:order]
if order_values = preload_values[:order] || values[:order]
scope.order!(order_values)
end
if preload_values[:reordering] || values[:reordering]
scope.reordering_value = true
......
......@@ -2,13 +2,8 @@ module ActiveRecord
module Associations
class Preloader
class CollectionAssociation < Association #:nodoc:
private
def build_scope
super.order(preload_scope.values[:order] || reflection_scope.values[:order])
end
def preload(preloader)
associated_records_by_owner(preloader).each do |owner, records|
association = owner.association(reflection.name)
......@@ -17,7 +12,6 @@ def preload(preloader)
records.each { |record| association.set_inverse_instance(record) }
end
end
end
end
end
......
......@@ -2,7 +2,6 @@ module ActiveRecord
module Associations
class Preloader
class HasOne < SingularAssociation #:nodoc:
def association_key_name
reflection.foreign_key
end
......@@ -10,13 +9,6 @@ def association_key_name
def owner_key_name
reflection.active_record_primary_key
end
private
def build_scope
super.order(preload_scope.values[:order] || reflection_scope.values[:order])
end
end
end
end
......
......@@ -84,7 +84,9 @@ def through_scope
end
scope.references! reflection_scope.values[:references]
scope = scope.order reflection_scope.values[:order] if scope.eager_loading?
if scope.eager_loading? && order_values = reflection_scope.values[:order]
scope = scope.order(order_values)
end
end
scope
......
......@@ -1221,12 +1221,6 @@ def test_join_eager_with_empty_order_should_generate_valid_sql
end
end
def test_join_eager_with_nil_order_should_generate_valid_sql
assert_nothing_raised(ActiveRecord::StatementInvalid) do
Post.includes(:comments).order(nil).where(:comments => {:body => "Thank you for the welcome"}).first
end
end
def test_deep_including_through_habtm
# warm up habtm cache
posts = Post.all.merge!(:includes => {:categories => :categorizations}, :order => "posts.id").to_a
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册