1
0
Fork 0
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:
brainopia 2015-01-06 02:25:19 +03:00
parent 1c8192669f
commit 42e386173f
2 changed files with 12 additions and 2 deletions

View file

@ -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

View file

@ -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]]