Como posso forçar os usuários a preencher um campo personalizado quando ele está vazio

Para essa pergunta específica, assumindo que uma pergunta não respondida será NULL no banco de dados, você pode simplesmente substituir where.not(value: [nil]) por where(value: nil).

Você também pode usar where(value: [nil, ""]), que é equivalente a WHERE (something.value IS NULL OR something.value = "") em SQL, para procurar por uma string vazia ou NULL. Não tenho certeza de qual é mais provável ou se é provável que mude (de NULL para “”) se um usuário enviar um campo vazio.