Обновление подписчика через библиотеку 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 параметра. Вызов метода обновления в этом случае фактически выполнит обновление правильно.