Rails: запретить переупорядочивание хеша JSON

У меня есть следующий метод в моем ContactsController:

def index
    @contacts = {}
    company = current_employer.company
    groups = company.groups.pluck(:name)
    contacts = company.contacts.order(last_name: :asc)

    contacts.each do |contact|
        @contacts[contact.id] = contact.as_json
        @contacts[contact.id][:groups] = {}
        contact_groups = contact.groups.pluck(:name)

        groups.each do |name|
            @contacts[contact.id][:groups][name] = contact_groups.include?(name)
        end
    end
    binding.pry

    respond_to do |format|
        format.json { render json: { contacts: @contacts } }
    end
end

Это генерирует хэш @contacts, где ключами являются идентификаторы контактов, но хэш упорядочен по фамилии контакта. Если я вставлю binding.pry, я увижу, что хэш находится в правильном порядке, который ожидает мой клиент, однако после его рендеринга хэш переупорядочивается по идентификаторам контактов.

Вот пример того, как выглядит @contacts:

{
    contacts: {
        24: {
            id: 24,
            first_name: "Foo",
            last_name: "Bar",
            email: "[email protected]",
            groups: {
                Test: true,
                Random: false,
                Example: false
            }
        },
        31: {
            id: 31,
            first_name: "Jackie",
            last_name: "Chan",
            email: "[email protected]",
            groups: {
                Test: false,
                Random: true,
                Example: false
            }
        },
        28: {
            id: 28,
            first_name: "Jason",
            last_name: "Rebourne",
            email: "[email protected]",
            groups: {
                Test: false,
                Random: false,
                Example: true
            }
        }
    }
}

Обычно это желательное поведение, однако в этом случае я хотел бы отключить его, чтобы избежать дополнительной итерации ответа на стороне клиента. Как я могу предотвратить переупорядочение хэша?

Примечание. У меня нет специального сериализатора для моих классов Contact или Group.

Изменить

Это не дублирующий вопрос. Я хочу вернуть пользовательскую структуру JSON, а не стандартную сериализованную структуру, о которой идет речь в связанном «дублированном» вопросе.


person Daniel Bonnell    schedule 23.01.2016    source источник