OS
params.require(:message).permit(:title, :content, images: [])
в форме достаточно указать ... multiple:true? (этого в статье нету)
стоит пробовать с такими входными данными сделать простой пример?
и еще , а carriervawe не умеет как activestorage , создавать свои дополнительные таблицы для файлов?