mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Correctly fetch bind_values from join in subquery
This commit is contained in:
parent
1c8192669f
commit
42e386173f
2 changed files with 12 additions and 2 deletions
|
@ -745,6 +745,9 @@ module ActiveRecord
|
|||
|
||||
def from!(value, subquery_name = nil) # :nodoc:
|
||||
self.from_value = [value, subquery_name]
|
||||
if value.is_a? Relation
|
||||
self.bind_values = value.arel.bind_values + value.bind_values + bind_values
|
||||
end
|
||||
self
|
||||
end
|
||||
|
||||
|
@ -999,7 +1002,6 @@ module ActiveRecord
|
|||
case opts
|
||||
when Relation
|
||||
name ||= 'subquery'
|
||||
self.bind_values = opts.bind_values + self.bind_values
|
||||
opts.arel.as(name.to_s)
|
||||
else
|
||||
opts
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
require 'cases/helper'
|
||||
require 'models/topic'
|
||||
require 'models/author'
|
||||
require 'models/post'
|
||||
|
||||
module ActiveRecord
|
||||
class BindParameterTest < ActiveRecord::TestCase
|
||||
fixtures :topics
|
||||
fixtures :topics, :authors, :posts
|
||||
|
||||
class LogListener
|
||||
attr_accessor :calls
|
||||
|
@ -30,6 +32,12 @@ module ActiveRecord
|
|||
end
|
||||
|
||||
if ActiveRecord::Base.connection.supports_statement_cache?
|
||||
def test_bind_from_join_in_subquery
|
||||
subquery = Author.joins(:thinking_posts).where(name: 'David')
|
||||
scope = Author.from(subquery, 'authors').where(id: 1)
|
||||
assert_equal 1, scope.count
|
||||
end
|
||||
|
||||
def test_binds_are_logged
|
||||
sub = @connection.substitute_at(@pk)
|
||||
binds = [[@pk, 1]]
|
||||
|
|
Loading…
Reference in a new issue