Estava trabalhando em um problema semelhante e encontrei uma solução um pouco mais concisa:
objs = MyModel.find(ids).sort_by{|m| ids.index(m.id) }
basicamente apenas usando o bloco de classificação para prender o índice do elemento.
objs = MyModel.find(ids).sort_by{|m| ids.index(m.id) }