FactoryBot.define do factory :relation do timestamp { Time.now } visible { true } version { 1 } changeset trait :deleted do visible { false } end trait :with_history do after(:create) do |relation, _evaluator| (1..relation.version).each do |n| create(:old_relation, :relation_id => relation.id, :version => n, :changeset => relation.changeset) end # For deleted relations, make sure the most recent old_relation is also deleted. if relation.visible == false latest = relation.old_relations.find_by(:version => relation.version) latest.visible = false latest.save end end end end end