Extract private method: load_record_for_bt_association
This commit is contained in:
parent
e6e2577afa
commit
58b46f05f6
|
@ -145,6 +145,24 @@ module PaperTrail
|
||||||
(model.attribute_names - attrs.keys).each { |k| attrs[k] = nil }
|
(model.attribute_names - attrs.keys).each { |k| attrs[k] = nil }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Given a `belongs_to` association and a `version`, return a record that
|
||||||
|
# can be assigned in order to reify that association.
|
||||||
|
# @api private
|
||||||
|
def load_record_for_bt_association(assoc, 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
|
||||||
|
|
||||||
# Given a `belongs_to` association and an `id`, return a version record
|
# Given a `belongs_to` association and an `id`, return a version record
|
||||||
# from the point in time identified by `transaction_id` or `version_at`.
|
# from the point in time identified by `transaction_id` or `version_at`.
|
||||||
# @api private
|
# @api private
|
||||||
|
@ -321,20 +339,8 @@ module PaperTrail
|
||||||
def reify_belongs_to_association(assoc, model, options, transaction_id)
|
def reify_belongs_to_association(assoc, model, options, transaction_id)
|
||||||
id = model.send(assoc.association_foreign_key)
|
id = model.send(assoc.association_foreign_key)
|
||||||
version = load_version_for_bt_association(assoc, id, transaction_id, options[:version_at])
|
version = load_version_for_bt_association(assoc, id, transaction_id, options[:version_at])
|
||||||
collection = if version.nil?
|
record = load_record_for_bt_association(assoc, id, options, version)
|
||||||
assoc.klass.where(assoc.klass.primary_key => id).first
|
model.send("#{assoc.name}=".to_sym, record)
|
||||||
else
|
|
||||||
version.reify(
|
|
||||||
options.merge(
|
|
||||||
has_many: false,
|
|
||||||
has_one: false,
|
|
||||||
belongs_to: false,
|
|
||||||
has_and_belongs_to_many: false
|
|
||||||
)
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
model.send("#{assoc.name}=".to_sym, collection)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# Reify all `belongs_to` associations of `model`.
|
# Reify all `belongs_to` associations of `model`.
|
||||||
|
|
Loading…
Reference in New Issue