Проблема была в коде контроллера.
В «новом» действии контроллера я просто не могу выполнить:
@provider = Provider.new(params[:provider])
как обычно.
Вместо этого я должен обрабатывать каждый параметр отдельно:
@provider.location = params [: поставщик] [: местоположение]
и т.д ...
Для флажков Car я добавляю каждый car_id из параметра car_ids в ассоциацию моделей автомобилей has_many по одному:
car_ids = params[:provider][:car_ids]
car_ids.each do |cid|
@provider.cars << Car.find(cid)
end
Тогда я могу позвонить:
@provider.save!
И он сохраняет правильно (моя первоначальная проблема заключалась в том, что он не сохранял выбранные автомобили).
По какой-то причине я смог понять это только после публикации вопроса здесь. Забавно, как это работает.
Спасибо всем за ваши ответы!