¿Es posible tener un tipo opcional en Rails 5?

No creo que haya una función incorporada para esto.

Tendrá que manejar esto en la clase de su modelo, supongo que ya tiene una migración que agrega la columna de marca de tiempo done_at a su esquema / modelo:

clase Foo <ActiveRecord :: Base
# Generar métodos de obtención y establecimiento de variables de instancia
# con un valor predeterminado (esto no se conserva en su base de datos)
attr_accessor_with_default: is_done, false

# Definir un método de instancia que realice una acción personalizada
# justo antes de que su instancia se guarde en la base de datos
before_save: mark_as_done, if:: is_done

# Los métodos de devolución de llamada no deben ser públicos
privado

# El método real que “toca” la marca de tiempo actual
# En su columna personalizada ‘done_at’ justo antes
# se conserva en la base de datos
def mark_as_done
toque (: done_at)
fin
fin

# Uso
foo = Foo.nuevo
foo.is_done = true
foo.save
pone foo.done_at

Espero que te ayude.