Мне приходилось иметь дело с этим с помощью функции muroid recursively_embeds_many, но по сути это то же самое. Нет ничего плохого, насколько я могу судить, буквально переписывая документ. Напишите метод модели, чтобы сделать что-то вроде:
def reverse_blocks
reversed_blocks = blocks.to_a.reverse
blocks.clear
reversed_blocks.each do |b|
blocks.create b.attributes
end
save
end
Это не очень хороший код выше, но он дает вам представление о том, как делать то, что вы хотите сделать. Я не в восторге от необходимости проходить через это просто, чтобы переупорядочить вещи в массиве, но это так.