module PaperTrailAssociationTracking::Reifiers::BelongsTo
def load_record(assoc_klass, id, options, version)
- Api: - private
def load_record(assoc_klass, id, options, version) if version.nil? assoc_klass.where(assoc_klass.primary_key => id).first else version.reify( options.merge( has_many: false, has_one: false, belongs_to: false, has_and_belongs_to_many: false ) ) end end
def load_version(assoc_klass, id, transaction_id, version_at)
- Api: - private
def load_version(assoc_klass, id, transaction_id, version_at) assoc_klass.paper_trail.version_class. where("item_type = ?", assoc_klass.base_class.name). where("item_id = ?", id). where("created_at >= ? OR transaction_id = ?", version_at, transaction_id). order("id").limit(1).first end
def reify(assoc, model, options, transaction_id)
- Api: - private
def reify(assoc, model, options, transaction_id) id = model.send(assoc.foreign_key) klass = assoc.polymorphic? ? model.send(assoc.foreign_type).constantize : assoc.klass version = load_version(klass, id, transaction_id, options[:version_at]) record = load_record(klass, id, options, version) model.send("#{assoc.name}=".to_sym, record) end