class RunOnceTask < ApplicationRecord
validates :name, presence: true, uniqueness: true
end
class RunOnce
def self.call(name)
return if RunOnceTask.exists?(name: name)
yield
RunOnceTask.create!(name: name, ran_at: Time.current)
end
end
Sometimes you need a one-time maintenance operation outside normal schema changes. Use a small table to track “run once” tasks so reruns are safe and the operation is visible.