¿Cómo puedo obligar a los usuarios a rellenar un campo personalizado cuando está vacío?

A esa pregunta específica, asumiendo que una pregunta sin respuesta será NULL en la base de datos, puedes simplemente reemplazar where.not(value: [nil]) con where(value: nil).

También puedes usar where(value: [nil, ""]), que es equivalente a WHERE (something.value IS NULL OR something.value = "") en SQL, para buscar una cadena vacía o NULL. No estoy seguro de cuál es probable que sea o si es probable que cambie (de NULL a “”) si un usuario envía un campo vacío.