class PireLoader::Loaders::Singular
Attributes
association[R]
Public Class Methods
new(association)
click to toggle source
# File lib/pire_loader/loaders/singular.rb, line 12 def initialize(association) @association = association end
preload(association)
click to toggle source
# File lib/pire_loader/loaders/singular.rb, line 8 def self.preload(association) new(association).preload end
Public Instance Methods
preload()
click to toggle source
# File lib/pire_loader/loaders/singular.rb, line 16 def preload owner_records.each do |record| join_value = record[join_foreign_key] record.association(reflection.name).target = associated_records[join_value] end end
Private Instance Methods
associated_records()
click to toggle source
# File lib/pire_loader/loaders/singular.rb, line 31 def associated_records @associated_records ||= association.scope .except(:limit) .rewhere(foreign_key => join_values) .to_a .index_by(&foreign_key.to_sym) end
join_values()
click to toggle source
# File lib/pire_loader/loaders/singular.rb, line 43 def join_values owner_records.map { |record| record[join_foreign_key] } end
owner_records()
click to toggle source
# File lib/pire_loader/loaders/singular.rb, line 39 def owner_records @owner_records ||= association.owner.parent_relation.records end