Это происходит потому, что параметры, отправленные с запросами, передаются в виде строк, и, следовательно, для целочисленных столбцов, которые установлены из параметров, rails вызывает to_i в строке, чтобы получить целое число. Если он не может определить целое число из него (что происходит, если строка не начинается с нескольких цифр), то to_i возвращает 0. Именно так работает ruby. Иногда рельсы обнаруживают это и выдают предупреждение, но он не может знать название каждого столбца, который должен проверить. Например, проверьте это (с консоли)
>> quiz = Quiz.first
=> <a quiz>
>> quiz.user_id = "foo"
=> "foo"
>> quiz.save
=> true
>> quiz.user_id
=> 0