Мне хотелось бы получить несколько советов о том, как синхронизировать список адресов электронной почты для пользователей 11k с программой внешнего списка рассылки, в данном случае Mailchimp.
Как правило, я бы просто использовал обратный вызов: after_save для отправки одного обновления на внешний API.
Но уже каждый час запускается задача rake, чтобы обновить свойство для каждого пользователя в базе данных. Если бы я просто делал это, каждый час плохой API mailchimp получал бы 11 000 раз.
Какой самый эффективный и простой способ сделать это, чтобы проверить, изменился ли только один атрибут, который вы смотрите, по сравнению с тем, который был до сохранения?
Если есть переменная, которая сохраняется в течение жизненного цикла транзакции, я просто сделал бы что-то вроде этого, где я проверяю, изменилось ли значение, и если оно отличается, выполнить другой код.
class User
:before_save :store_old_email
:after_save :sync_with_chimp
def store_old_email
$ugly_of_global_variable_to_store_email = user.email
end
:sync_with_chimp
if $ugly_of_global_variable_to_store_email != user.email
//update_mail_chimp_api
end
end
end
Я проверил API рельсов здесь, и мне все еще немного неясно, как я должен это делать.
Вы бы использовали класс dirty? , чтобы сделать это?