Skip to content

Commit 7f6525e

Browse files
committed
Merge branch 'yujideveloper-bugfix/fix-multiple-database-connection'
2 parents 1faf48b + f3d7019 commit 7f6525e

File tree

4 files changed

+38
-3
lines changed

4 files changed

+38
-3
lines changed

lib/ransack/adapters/active_record/context.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def type_for(attr)
2727
return nil unless attr && attr.valid?
2828
name = attr.arel_attribute.name.to_s
2929
table = attr.arel_attribute.relation.table_name
30-
schema_cache = ::ActiveRecord::Base.connection.schema_cache
30+
schema_cache = self.klass.connection.schema_cache
3131
unless schema_cache.send(database_table_exists?, table)
3232
raise "No table named #{table} exists."
3333
end
@@ -290,7 +290,7 @@ def build_joins(relation)
290290
join_dependency.send(:alias_tracker).aliases[join.left.name.downcase] = 1
291291
end
292292
else
293-
alias_tracker = ::ActiveRecord::Associations::AliasTracker.create(::ActiveRecord::Base.connection, relation.table.name, join_list)
293+
alias_tracker = ::ActiveRecord::Associations::AliasTracker.create(self.klass.connection, relation.table.name, join_list)
294294
join_dependency = JoinDependency.new(relation.klass, relation.table, association_joins, alias_tracker)
295295
join_nodes.each do |join|
296296
join_dependency.send(:alias_tracker).aliases[join.left.name.downcase] = 1
@@ -333,7 +333,7 @@ def build_association(name, parent = @base, klass = nil)
333333
)
334334
found_association = jd.join_root.children.last
335335
else
336-
alias_tracker = ::ActiveRecord::Associations::AliasTracker.create(::ActiveRecord::Base.connection, parent.table.name, [])
336+
alias_tracker = ::ActiveRecord::Associations::AliasTracker.create(self.klass.connection, parent.table.name, [])
337337
jd = JoinDependency.new(
338338
parent.base_klass,
339339
parent.base_klass.arel_table,

spec/ransack/adapters/active_record/base_spec.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,13 @@ module ActiveRecord
1818
expect(subject.object).to be_an ::ActiveRecord::Relation
1919
end
2020

21+
context "multiple database connection" do
22+
it "does not raise error" do
23+
expect { Person.ransack(name_cont: "test") }.not_to raise_error
24+
expect { SubDB::OperationHistory.ransack(people_id_eq: 1) }.not_to raise_error
25+
end
26+
end
27+
2128
context 'with scopes' do
2229
before do
2330
allow(Person)

spec/spec_helper.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
line = '=' * message.length
3838
puts line, message, line
3939
Schema.create
40+
SubDB::Schema.create
4041
end
4142

4243
config.before(:all) { Sham.reset(:before_all) }

spec/support/schema.rb

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,3 +261,30 @@ def self.create
261261
)
262262
end
263263
end
264+
265+
module SubDB
266+
class Base < ActiveRecord::Base
267+
self.abstract_class = true
268+
establish_connection(
269+
adapter: 'sqlite3',
270+
database: ':memory:'
271+
)
272+
end
273+
274+
class OperationHistory < Base
275+
end
276+
277+
module Schema
278+
def self.create
279+
s = ::ActiveRecord::Schema.new
280+
s.instance_variable_set(:@connection, SubDB::Base.connection)
281+
s.verbose = false
282+
s.define({}) do
283+
create_table :operation_histories, force: true do |t|
284+
t.string :operation_type
285+
t.integer :people_id
286+
end
287+
end
288+
end
289+
end
290+
end

0 commit comments

Comments
 (0)