Форма MailChimp не регистрирует пользователей как ожидающих, пока они не подтвердят по электронной почте
Я пытаюсь синхронизировать список пользователей моих приложений с теми, кто подписан на MailChimp.
Мы используем Gem Gibbon с Rails 4. Все отлично работает, я могу просмотреть статус пользователя по его адресу электронной почты и определить, подписаны ли они, ожидают или нет. Пользователи могут зарегистрироваться через ссылку на онлайн-форму MailChimp или установив флажок в нашем веб-приложении.
Проблема заключается в том, что если пользователь подписывается по ссылке MailChimp, API MailChimp не распознает их как ожидающие. В результате наше приложение получает ноль, а не "в ожидании", что происходит, если они регистрируются через флажок.
Поскольку приложение получает ответ nil
он указывает пользователю, что он должен поставить галочку, чтобы подписаться на новостную рассылку, которая является awk, так как они уже подписались один раз.
Кроме того, если пользователь установит флажок, предварительно зарегистрировавшись непосредственно в MailChimp, он получит отклонение с ошибкой 400, поскольку у MailChimp уже есть адрес электронной почты.
Моя цель - иметь возможность точно отражать в приложении информацию о подписке, ожидании пользователя и т. Д. В MailChimp.
Ошибка и полная трассировка ниже:
.bundle / камни / рубин / 2.2.0 / драгоценные камни / гиббонов-2.0.0/ Библиотека / гиббонов /api_request.rb:100: в
handle_error' .bundle/gems/ruby/2.2.0/gems/gibbon-2.0.0/lib/gibbon/api_request.rb:16:in
спасти в post ' .bundle/gems/ruby / 2.2.0 / gems / gibbon-2.0.0/ lib / gibbon /api_request.rb:10: inpost' .bundle/gems/ruby/2.2.0/gems/gibbon-2.0.0/lib/gibbon/request.rb:28:in
создать 'app / models / user.rb: 60: inadd_to_mailchimp' .bundle/gems/ruby/2.2.0/gems/activesupport-4.2.3/lib/active_support/callbacks.rb:430:in
блок в make_lambda ' .bundle/gems/ruby /2.2.0/gems/activesupport-4.2.3/lib/active_support/callbacks.rb:237: вcall' .bundle/gems/ruby/2.2.0/gems/activesupport-4.2.3/lib/active_support/callbacks.rb:237:in
прекратить блокировку ' .bundle/gems/ruby /2.2.0/gems/activesupport-4.2.3/lib/active_support/callbacks.rb:504:incall' .bundle/gems/ruby/2.2.0/gems/activesupport-4.2.3/lib/active_support/callbacks.rb:504:in
блок в вызове.bundle / gems / ruby / 2.2.0 / gems / activesupport-4.2.3 / lib / active_support / callbacks.rb: 504: вeach' .bundle/gems/ruby/2.2.0/gems/activesupport-4.2.3/lib/active_support/callbacks.rb:504:in
вызвать ' .bundle/gems/ruby / 2.2.0 / gems / activesupport-4.2.3 / lib / active_support / callbacks.rb: 88: inrun_callbacks' .bundle/gems/ruby/2.2.0/gems/activemodel-4.2.3/lib/active_model/validations/callbacks.rb:113:in
run_validations!".bundle / камни / рубин / 2.2.0 / драгоценные камни / ActiveModel-4.2.3/ Библиотека /active_model/validations.rb:334: вvalid?' .bundle/gems/ruby/2.2.0/gems/activerecord-4.2.3/lib/active_record/validations.rb:58:in
действует?.bundle / камни / рубин / 2.2.0 / драгоценные камни / ActiveRecord-4.2.3/ Библиотека /active_record/validations.rb:83: вperform_validations' .bundle/gems/ruby/2.2.0/gems/activerecord-4.2.3/lib/active_record/validations.rb:37:in
сохранить ' .bundle/gems/ruby /2.2.0/gems/activerecord-4.2.3/lib/active_record/attribute_methods/dirty.rb:21:insave' .bundle/gems/ruby/2.2.0/gems/activerecord-4.2.3/lib/active_record/transactions.rb:286:in
блок (2 уровня) в save' .bundle/gems/ruby / 2.2.0 / gems / activerecord-4.2.3/ lib / active_record / Transactions.rb:351: вblock in with_transaction_returning_status' .bundle/gems/ruby/2.2.0/gems/activerecord-4.2.3/lib/active_record/connection_adapters/abstract/database_statements.rb:211:in
транзакция ' .bundle/gems/ruby / 2.2.0 / gems / activerecord-4.2.3/ lib / active_record / Transactions.rb: 220: вtransaction' .bundle/gems/ruby/2.2.0/gems/activerecord-4.2.3/lib/active_record/transactions.rb:348:in
with_transaction_returning_status' .bundle/gems/ruby / 2.2.0 / gems / activerecord-4.2.3/ lib / active_record / Transactions.rb:286: вblock in save' .bundle/gems/ruby/2.2.0/gems/activerecord-4.2.3/lib/active_record/transactions.rb:301:in
rollback_active_record_state!.bundle / камни / рубин / 2.2.0 / драгоценные камни / ActiveRecord-4.2.3/ Библиотека /active_record/transactions.rb:285: вsave' .bundle/gems/ruby/2.2.0/gems/activerecord-4.2.3/lib/active_record/persistence.rb:252:in
блок в обновлении ' .bundle/gems/ruby / 2.2.0 / gems / activerecord-4.2.3/ lib / active_record / Transactions.rb:351: вblock in with_transaction_returning_status' .bundle/gems/ruby/2.2.0/gems/activerecord-4.2.3/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in
блок в транзакции ' .bundle/gems/ruby /2.2.0/gems/activerecord-4.2.3/lib/active_record/connection_adapters/abstract/action.rb:184: вwithin_new_transaction' .bundle/gems/ruby/2.2.0/gems/activerecord-4.2.3/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in
транзакция ' .bundle/gems/ruby / 2.2.0 / gems / activerecord-4.2.3/ lib / active_record / Transactions.rb: 220: вtransaction' .bundle/gems/ruby/2.2.0/gems/activerecord-4.2.3/lib/active_record/transactions.rb:348:in
with_transaction_returning_status' .bundle/gems/ruby /2.2.0/gems/activerecord-4.2.3/lib/active_record/persistence.rb:250:inupdate' app/controllers/users_controller.rb:20:in
обновить ' .bundle/gems/ruby / 2.2.0 / gems / actionpack-4.2.3 / lib / action_controller / metal / implicit_render.rb: 4: insend_action' .bundle/gems/ruby/2.2.0/gems/actionpack-4.2.3/lib/abstract_controller/base.rb:198:in
process_action' .bundle/gems/ruby /2.2.0/gems/actionpack-4.2.3/lib/action_controller/metal/render.rb: 10: inprocess_action' .bundle/gems/ruby/2.2.0/gems/actionpack-4.2.3/lib/abstract_controller/callbacks.rb:20:in
block в process_action' .bundle/gems/ruby /2.2.0/gems/activesupport-4.2.3/lib/active_support/callbacks.rb:115: вcall' .bundle/gems/ruby/2.2.0/gems/activesupport-4.2.3/lib/active_support/callbacks.rb:115:in
вызов ' .bundle/gems/ruby /2.2.0/gems/activesupport-4.2.3/lib/active_support/callbacks.rb:553:inblock (2 levels) in compile' .bundle/gems/ruby/2.2.0/gems/activesupport-4.2.3/lib/active_support/callbacks.rb:503:in
вызов ' .bundle/gems/ruby / 2.2.0 / gems / activesupport-4.2.3 / lib / active_support / callbacks.rb: 503: incall' .bundle/gems/ruby/2.2.0/gems/activesupport-4.2.3/lib/active_support/callbacks.rb:88:in
run_callbacks ' .bundle/gems/ruby / 2.2.0 / gems / actionpack-4.2.3 / lib / abstract_controller / callbacks.rb: 19: inprocess_action' .bundle/gems/ruby/2.2.0/gems/actionpack-4.2.3/lib/action_controller/metal/rescue.rb:29:in
process_action' .bundle/gems/ruby /2.2.0/gems/actionpack-4.2.3/lib/action_controller/metal/instrumentation.rb:32:inblock in process_action' .bundle/gems/ruby/2.2.0/gems/activesupport-4.2.3/lib/active_support/notifications.rb:164:in
блок в инструменте ' .bundle/gems/ruby /2.2.0/gems/activesupport-4.2.3/lib/active_support/notifications/instrumenter.rb:20:ininstrument' .bundle/gems/ruby/2.2.0/gems/activesupport-4.2.3/lib/active_support/notifications.rb:164:in
Инструмент ' .bundle/gems/ruby / 2.2.0 / gems / actionpack-4.2.3 / lib / action_controller / metal / instrumentation.rb: 30: inprocess_action' .bundle/gems/ruby/2.2.0/gems/actionpack-4.2.3/lib/action_controller/metal/params_wrapper.rb:250:in
process_action' .bundle/gems/ruby / 2.2.0 / gems / searchkick-0.8.7 / lib / searchkick / logging.rb: 107: inprocess_action' .bundle/gems/ruby/2.2.0/gems/activerecord-4.2.3/lib/active_record/railties/controller_runtime.rb:18:in
process_action' .bundle/gems/ruby /2.2.0/gems/actionpack-4.2.3/lib/abstract_controller/base.rb:137:inprocess' .bundle/gems/ruby/2.2.0/gems/actionview-4.2.3/lib/action_view/rendering.rb:30:in
процесс ' .bundle/gems/ruby /2.2.0/gems/actionpack-4.2.3/lib/action_controller/metal.rb:196:indispatch' .bundle/gems/ruby/2.2.0/gems/actionpack-4.2.3/lib/action_controller/metal/rack_delegation.rb:13:in
рассылка ' .bundle/gems/ruby /2.2.0/gems/actionpack-4.2.3/lib/action_controller/metal.rb:237:inblock in action' .bundle/gems/ruby/2.2.0/gems/actionpack-4.2.3/lib/action_dispatch/routing/route_set.rb:76:in
вызов ' .bundle/gems/ruby /2.2.0/gems/actionpack-4.2.3/lib/action_dispatch/ routing / route_set.rb: 76: indispatch' .bundle/gems/ruby/2.2.0/gems/actionpack-4.2.3/lib/action_dispatch/routing/route_set.rb:45:in
serve ' .bundle/gems/ruby /2.2.0/gems/actionpack-4.2.3/lib/action_dispatch/ trip /router.rb:43:inblock in serve' .bundle/gems/ruby/2.2.0/gems/actionpack-4.2.3/lib/action_dispatch/journey/router.rb:30:in
каждый ' .bundle/gems/ruby /2.2.0/gems/actionpack-4.2.3/lib/action_dispatch/ trip / router.rb: 30: inserve' .bundle/gems/ruby/2.2.0/gems/actionpack-4.2.3/lib/action_dispatch/routing/route_set.rb:821:in
вызовите ' .bundle/gems/ruby /2.2.0/gems/rack-pjax-0.8.0/lib/rack/pjax.rb:12:incall' .bundle/gems/ruby/2.2.0/gems/bullet-4.14.7/lib/bullet/rack.rb:12:in
вызвать ' .bundle/gems/ruby / 2.2.0 / gems / warden-1.2.3 / lib / warden / manager.rb: 35: inblock in call' .bundle/gems/ruby/2.2.0/gems/warden-1.2.3/lib/warden/manager.rb:34:in
catch ' .bundle/gems/ruby /2.2.0/gems/warden-1.2.3/lib/warden/manager.rb:34:incall' .bundle/gems/ruby/2.2.0/gems/rack-1.6.4/lib/rack/etag.rb:24:in
вызовите ' .bundle/gems/ruby /2.2.0/gems/rack-1.6.4/lib/rack/conditionalget.rb:38:incall' .bundle/gems/ruby/2.2.0/gems/rack-1.6.4/lib/rack/head.rb:13:in
вызвать ' .bundle/gems/ruby /2.2.0/gems/remotipart-1.2.1/lib/remotipart/middleware.rb:27:incall' .bundle/gems/ruby/2.2.0/gems/actionpack-4.2.3/lib/action_dispatch/middleware/params_parser.rb:27:in
вызовите ' .bundle/gems/ruby /2.2.0/gems/actionpack-4.2.3/lib/action_dispatch/ middleware / flash.rb: 260: incall' .bundle/gems/ruby/2.2.0/gems/rack-1.6.4/lib/rack/session/abstract/id.rb:225:in
context ' .bundle/gems/ruby /2.2.0/gems/rack-1.6.4/lib/rack/session/abstract/id.rb:220:incall' .bundle/gems/ruby/2.2.0/gems/actionpack-4.2.3/lib/action_dispatch/middleware/cookies.rb:560:in
вызов ' .bundle/gems/ruby /2.2.0/gems/activerecord-4.2.3/lib/active_record/query_cache.rb:36:incall' .bundle/gems/ruby/2.2.0/gems/activerecord-4.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:653:in
вызов ' .bundle/gems/ruby / 2.2.0 / gems / activerecord-4.2.3/ lib / active_record /igration.rb:377: вcall' .bundle/gems/ruby/2.2.0/gems/actionpack-4.2.3/lib/action_dispatch/middleware/callbacks.rb:29:in
блок в вызове ' .bundle/gems/ruby /2.2.0/gems/activesupport-4.2.3/lib/active_support/callbacks.rb:84:inrun_callbacks' .bundle/gems/ruby/2.2.0/gems/actionpack-4.2.3/lib/action_dispatch/middleware/callbacks.rb:27:in
вызовите ' .bundle/gems/ruby /2.2.0/gems/actionpack-4.2.3/lib/action_dispatch/middleware/reloader.rb:73:incall' .bundle/gems/ruby/2.2.0/gems/actionpack-4.2.3/lib/action_dispatch/middleware/remote_ip.rb:78:in
вызовите ' .bundle/gems/ruby /2.2.0/gems/rollbar-1.5.3/lib/rollbar/middleware/rails/rollbar.rb:24:inblock in call' .bundle/gems/ruby/2.2.0/gems/rollbar-1.5.3/lib/rollbar.rb:799:in
в области видимости ' .bundle/gems/ruby /2.2.0/gems/rollbar-1.5.3/lib/rollbar/middleware/rails/rollbar.rb:22:incall' .bundle/gems/ruby/2.2.0/gems/actionpack-4.2.3/lib/action_dispatch/middleware/debug_exceptions.rb:17:in
вызовите.bundle / gems / ruby /2.2.0/gems/rollbar-1.5.3/lib/rollbar/middleware/rails/show_exceptions.rb:22:incall_with_rollbar' .bundle/gems/ruby/2.2.0/gems/web-console-2.1.2/lib/web_console/middleware.rb:37:in
вызовите.bundle / gems / ruby /2.2.0/gems/actionpack-4.2.3/lib/action_dispatch/ middleware / show_exceptions.rb: 30: incall' .bundle/gems/ruby/2.2.0/gems/railties-4.2.3/lib/rails/rack/logger.rb:38:in
call_app ' .bundle/gems/ruby /2.2.0/gems/railties-4.2.3/lib/rails/rack/logger.rb:20:inblock in call' .bundle/gems/ruby/2.2.0/gems/activesupport-4.2.3/lib/active_support/tagged_logging.rb:68:in
блок в теге ' .bundle/gems/ruby /2.2.0/gems/activesupport-4.2.3/lib/active_support/tagged_logging.rb:26: вtagged' .bundle/gems/ruby/2.2.0/gems/activesupport-4.2.3/lib/active_support/tagged_logging.rb:68:in
с тегом ' .bundle/gems/ruby /2.2.0/gems/railties-4.2.3/lib/rails/rack/logger.rb:20:incall' .bundle/gems/ruby/2.2.0/gems/ahoy_matey-1.1.1/lib/ahoy/engine.rb:20:in
call_with_quiet_ahoy ' .bundle/gems/ruby /2.2.0/gems/request_store-1.1.0/lib/request_store/middleware.rb:8:incall' .bundle/gems/ruby/2.2.0/gems/actionpack-4.2.3/lib/action_dispatch/middleware/request_id.rb:21:in
вызовите ' .bundle/gems/ruby /2.2.0/gems/rack-1.6.4/lib/rack/metadoverride.rb:22:incall' .bundle/gems/ruby/2.2.0/gems/rack-1.6.4/lib/rack/runtime.rb:18:in
вызовите.bundle / gems / ruby /2.2.0/gems/activesupport-4.2.3/lib/active_support/cache/ стратегии /local_cache_middleware.rb:28:incall' .bundle/gems/ruby/2.2.0/gems/rack-1.6.4/lib/rack/lock.rb:17:in
вызов ' .bundle/gems/ruby /2.2.0/gems/actionpack-4.2.3/lib/action_dispatch/middleware/static.rb:116:incall' .bundle/gems/ruby/2.2.0/gems/rack-1.6.4/lib/rack/sendfile.rb:113:in
вызвать ' .bundle/gems/ruby /2.2.0/gems/railties-4.2.3/lib/rails/engine.rb:518:incall' .bundle/gems/ruby/2.2.0/gems/railties-4.2.3/lib/rails/application.rb:165:in
вызовите ' .bundle/gems/ruby / 2.2.0 / gems / rack-1.6.4 / lib / rack / content_length.rb: 15: incall' .bundle/gems/ruby/2.2.0/gems/puma-2.11.2/lib/puma/server.rb:507:in
handle_request ' .bundle/gems/ruby /2.2.0/gems/puma-2.11.2/lib/puma/server.rb:375:inprocess_client' .bundle/gems/ruby/2.2.0/gems/puma-2.11.2/lib/puma/server.rb:262:in
Запустить блок ' .bundle/gems/ruby /2.2.0/gems/puma-2.11.2/lib/puma/thread_pool.rb:104:incall' .bundle/gems/ruby/2.2.0/gems/puma-2.11.2/lib/puma/thread_pool.rb:104:in
блок в spawn_thread'