File tree Expand file tree Collapse file tree 2 files changed +35
-0
lines changed
lib/active_record/connection_adapters Expand file tree Collapse file tree 2 files changed +35
-0
lines changed Original file line number Diff line number Diff line change 1+ require "active_record/associations/preloader"
2+
3+ module ActiveRecord
4+ module ConnectionAdapters
5+ module SQLServer
6+ module CoreExt
7+ module Preloader
8+ private
9+
10+ def records_for ( ids )
11+ ids . each_slice ( in_clause_length ) . flat_map do |slice |
12+ scope . where ( association_key_name => slice ) . load do |record |
13+ # Processing only the first owner
14+ # because the record is modified but not an owner
15+ owner = owners_by_key [ convert_key ( record [ association_key_name ] ) ] . first
16+ association = owner . association ( reflection . name )
17+ association . set_inverse_instance ( record )
18+ end . records
19+ end
20+ end
21+
22+ def in_clause_length
23+ 10_000
24+ end
25+ end
26+ end
27+ end
28+ end
29+ end
30+
31+ ActiveSupport . on_load ( :active_record ) do
32+ mod = ActiveRecord ::ConnectionAdapters ::SQLServer ::CoreExt ::Preloader
33+ ActiveRecord ::Associations ::Preloader ::Association . prepend ( mod )
34+ end
Original file line number Diff line number Diff line change 99require 'active_record/connection_adapters/sqlserver/core_ext/attribute_methods'
1010require 'active_record/connection_adapters/sqlserver/core_ext/finder_methods'
1111require 'active_record/connection_adapters/sqlserver/core_ext/query_methods'
12+ require 'active_record/connection_adapters/sqlserver/core_ext/preloader'
1213require 'active_record/connection_adapters/sqlserver/version'
1314require 'active_record/connection_adapters/sqlserver/type'
1415require 'active_record/connection_adapters/sqlserver/database_limits'
You can’t perform that action at this time.
0 commit comments