mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Remove delegating to arel in a relation
The delegation was needed since passing `relation` with `relation.bound_attributes`. It should use `relation.arel` in that case.
This commit is contained in:
parent
686e8fb52e
commit
425f2cacaf
6 changed files with 7 additions and 9 deletions
|
@ -123,6 +123,7 @@ module ActiveRecord
|
|||
# If arel is locked this is a SELECT ... FOR UPDATE or somesuch. Such
|
||||
# queries should not be cached.
|
||||
def locked?(arel)
|
||||
arel = arel.arel if arel.is_a?(Relation)
|
||||
arel.respond_to?(:locked) && arel.locked
|
||||
end
|
||||
|
||||
|
|
|
@ -311,7 +311,7 @@ module ActiveRecord
|
|||
relation.group_values = group_fields
|
||||
relation.select_values = select_values
|
||||
|
||||
calculated_data = @klass.connection.select_all(relation, nil, relation.bound_attributes)
|
||||
calculated_data = @klass.connection.select_all(relation.arel, nil, relation.bound_attributes)
|
||||
|
||||
if association
|
||||
key_ids = calculated_data.collect { |row| row[group_aliases.first] }
|
||||
|
|
|
@ -44,8 +44,6 @@ module ActiveRecord
|
|||
delegate :table_name, :quoted_table_name, :primary_key, :quoted_primary_key,
|
||||
:connection, :columns_hash, to: :klass
|
||||
|
||||
delegate :ast, :locked, to: :arel
|
||||
|
||||
module ClassSpecificRelation # :nodoc:
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
|
|
|
@ -316,7 +316,7 @@ module ActiveRecord
|
|||
|
||||
relation = construct_relation_for_exists(relation, conditions)
|
||||
|
||||
connection.select_value(relation, "#{name} Exists", relation.bound_attributes) ? true : false
|
||||
connection.select_value(relation.arel, "#{name} Exists", relation.bound_attributes) ? true : false
|
||||
rescue ::RangeError
|
||||
false
|
||||
end
|
||||
|
@ -377,8 +377,7 @@ module ActiveRecord
|
|||
if ActiveRecord::NullRelation === relation
|
||||
[]
|
||||
else
|
||||
arel = relation.arel
|
||||
rows = connection.select_all(arel, "SQL", relation.bound_attributes)
|
||||
rows = connection.select_all(relation.arel, "SQL", relation.bound_attributes)
|
||||
join_dependency.instantiate(rows, aliases)
|
||||
end
|
||||
end
|
||||
|
@ -425,9 +424,8 @@ module ActiveRecord
|
|||
"#{quoted_table_name}.#{quoted_primary_key}", relation.order_values)
|
||||
|
||||
relation = relation.except(:select).select(values).distinct!
|
||||
arel = relation.arel
|
||||
|
||||
id_rows = @klass.connection.select_all(arel, "SQL", relation.bound_attributes)
|
||||
id_rows = @klass.connection.select_all(relation.arel, "SQL", relation.bound_attributes)
|
||||
id_rows.map { |row| row[primary_key] }
|
||||
end
|
||||
|
||||
|
|
|
@ -2002,7 +2002,7 @@ class RelationTest < ActiveRecord::TestCase
|
|||
end
|
||||
|
||||
def test_locked_should_not_build_arel
|
||||
posts = Post.lock
|
||||
posts = Post.locked
|
||||
assert posts.locked?
|
||||
assert_nothing_raised { posts.lock!(false) }
|
||||
end
|
||||
|
|
|
@ -22,6 +22,7 @@ class Post < ActiveRecord::Base
|
|||
scope :ranked_by_comments, -> { order("comments_count DESC") }
|
||||
|
||||
scope :limit_by, lambda { |l| limit(l) }
|
||||
scope :locked, -> { lock }
|
||||
|
||||
belongs_to :author
|
||||
belongs_to :readonly_author, -> { readonly }, class_name: "Author", foreign_key: :author_id
|
||||
|
|
Loading…
Reference in a new issue