class OccamsRecord::EagerLoaders::BelongsTo
Eager loader for belongs_to associations.
Private Instance Methods
merge!(assoc_rows, rows)
click to toggle source
Merge
the association rows into the given rows.
@param assoc_rows [Array<OccamsRecord::Results::Row>] rows loaded from the association @param rows [Array<OccamsRecord::Results::Row>] rows loaded from the main model
# File lib/occams-record/eager_loaders/belongs_to.rb, line 35 def merge!(assoc_rows, rows) Merge.new(rows, name). single!(assoc_rows, {@ref.foreign_key.to_s => @ref.association_primary_key.to_s}) end
query(rows) { |q| ... }
click to toggle source
Yield one or more ActiveRecord::Relation objects to a given block.
@param rows [Array<OccamsRecord::Results::Row>] Array of rows used to calculate the query. @yield
# File lib/occams-record/eager_loaders/belongs_to.rb, line 13 def query(rows) return if rows.empty? ids = rows.map { |row| begin row.send @ref.foreign_key rescue NoMethodError => e raise MissingColumnError.new(row, e.name) end }.compact.uniq ids.sort! if $occams_record_test q = base_scope.where(@ref.association_primary_key => ids) yield q if ids.any? end