15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# File 'lib/upkeep/invalidation/collection_prepend.rb', line 15
def build
replay = recipe.replay
return unless replay.is_a?(Replay::Collection)
return if replay.derived_partial?
return unless create_change?
collection = replay.collection
return unless collection.is_a?(Replay::ActiveRecordRelationValue)
return unless collection.primary_key
return unless collection.appendable? || unfilled_limit_window?(collection)
model = constantize(collection.model)
return unless change.fetch(:table) == model.table_name
record = model.find_by(id: change.fetch(:id))
return unless record && relation_prepends_record?(model, collection, record)
Replay::Recipe.new(
kind: :render_site_prepend,
frame_id: recipe.frame_id,
target_kind: recipe.target_kind,
target_id: recipe.target_id,
template: recipe.template,
metadata: recipe.metadata,
runtime: "rails",
replay: Replay::CollectionMember.new(
controller_class: replay.controller_class,
partial: replay.partial,
record: Replay.active_record_value(record),
options: replay.options
)
)
end
|