Обновление подписчика через библиотеку Ruby для API CreateSend

Я мог упустить что-то очевидное, но я не могу понять, как обновить имя существующего подписчика в списке клиентов CreateSend с помощью Ruby.

Все детали списка верны, вот что у меня есть (подписчик уже существует в списке):

@subscriber = CreateSend::Subscriber.get(
    {:api_key => ENV['CM_API_KEY']}, ENV['CM_LIST_ID'], "me@me.com"
)

Согласно тестам метод update() должен иметь 4 параметра:

@subscriber.update("me@me.com", "Name of Person", [], true)

Вызов этого приводит к ошибке ArgumentError: неверное количество аргументов (4 для 1).

Итак, я пытаюсь вызвать update, передав хэш обновленных атрибутов:

@subscriber.update({"Name" => "New Name"})

Ошибок не возникает, и возвращенный объект @subscriber содержит все обновленные поля, пока вы не перезагрузите его из API - он вернется в исходное состояние.

Ссылка на тестовый код:

1 ответ

Решение

Я нашел ответ на это, если кто-то еще испытывает ту же проблему.

CreateSend::Subscriber.get возвращает экземпляр Hashie class, где update методы ожидают один параметр, содержащий хэш. Это на самом деле не обновляет данные подписчика, а только атрибуты локальной переменной экземпляра Hashie.

CreateSend::Subscriber.new вернет экземпляр класса Subscriber, где update Метод ожидает 4 параметра. Вызов метода обновления в этом случае фактически выполнит обновление правильно.

Другие вопросы по тегам