class ActiveRecord::Relation
Public Class Methods
new(*args)
click to toggle source
# File lib/activerecord/preload_query.rb, line 19 def initialize(*args) origin_initialize(*args) @preload_queries = [] end
Also aliased as: origin_initialize
Public Instance Methods
preload_query(*names)
click to toggle source
# File lib/activerecord/preload_query.rb, line 24 def preload_query(*names) @preload_queries.push(*Array.wrap(names)) self end
Private Instance Methods
exec_queries()
click to toggle source
# File lib/activerecord/preload_query.rb, line 32 def exec_queries records = origin_exec_queries if @preload_queries.present? primary_key = @klass.primary_key.try(:to_sym) @preload_queries.each do |pc| tmp = @klass.send(pc, records.map(&primary_key)).map{|x| [x.send(primary_key), x.send(pc)]}.to_h records.map do |record| record.define_singleton_method pc, lambda { tmp[record.send(primary_key)] } end end end records end
Also aliased as: origin_exec_queries