@@ -74,55 +74,9 @@ def records
7474 end
7575 end
7676
77- preload_cross_database_associations ( records , preload_loads )
78-
7977 records
8078 end
8179
82- def preload_cross_database_associations ( records , preload_loads )
83- preload_loads . each do |association_name |
84- association = @resource . reflect_on_association ( association_name )
85- next unless separate_database? ( @resource , association )
86-
87- columns = columns_for_cross_database_association ( association_name )
88- if association . macro == :belongs_to
89- foreign_key = association . foreign_key
90- primary_key = association . klass . primary_key
91-
92- ids = records . map { |r | r . public_send ( foreign_key ) } . compact . uniq
93- next if ids . empty?
94-
95- associated = association . klass . where ( primary_key => ids )
96- . select ( columns )
97- . index_by { |record | record . public_send ( primary_key ) }
98-
99- records . each do |record |
100- record . define_singleton_method ( association_name ) do
101- associated [ record . send ( foreign_key . to_sym ) ] || nil
102- end
103- end
104- end
105-
106- if association . macro == :has_one
107- foreign_key = association . foreign_key
108- primary_key = association . active_record_primary_key
109-
110- ids = records . map { |r | r . public_send ( primary_key ) } . compact . uniq
111- next if ids . empty?
112-
113- associated = association . klass . where ( foreign_key => ids )
114- . select ( columns )
115- . index_by { |record | record . public_send ( foreign_key . to_sym ) }
116-
117- records . each do |record |
118- record . define_singleton_method ( association_name ) do
119- associated [ record . send ( primary_key . to_sym ) ] || nil
120- end
121- end
122- end
123- end
124- end
125-
12680 def columns_for_cross_database_association ( association_name )
12781 association = @resource . reflect_on_association ( association_name )
12882
0 commit comments