2013-11-11 2 views
0

Я использую Ruby 1.9.3 без Rails и пытаюсь подготовить адреса электронной почты для отправки API-интерфейсу поставщиков услуг электронной почты. Я должен разбить посылки в партии. Я использую 3 здесь в качестве примера. Во-первых, я получаю рефералы, которые мы отправим из запроса базы данных.Как подготовить JSON для пакетного обновления

referrals = @db.query("SELECT * FROM referrals") 

Я беру, беру рефералы и используя each_slice для создания партий. Однако, когда я запускаю следующий код, запись в журнале для ready_batch не имеет содержимого, в то время как запись журнала для реферала ['client_email'] содержит правильные значения.

referrals.each_slice(3) do |batch| 
    prepared_batch = batch.map do |referral| 
    { 
     :EMAIL => referral['client_email'], 
     :EMAIL_TYPE => 'html' 
    } 
    @log.info("referral in prepared_batch: #{referral['client_email']}") 
    @log.info("prepared_batch : #{prepared_batch}") 
    end 
end 

Что мне следует обновить здесь, чтобы у подготовленной_подписки было три записи?

Я ценю все советы. Благодарю.

ответ

1

Вы на самом деле положили результат вызова @log.info в подготовленную партию. Попробуйте это:

referrals.each_slice(3) do |batch| 
    prepared_batch = batch.map do |referral| 
    @log.info("referral in prepared_batch: #{referral['client_email']}") 
    { 
     :EMAIL => referral['client_email'], 
     :EMAIL_TYPE => 'html' 
    } 
    end 
    @log.info("prepared_batch : #{prepared_batch}") 
end 
1

prepared_batch назначается только после того, как map do .. end делается. Полагаю, именно поэтому вы не получили значение в блоке.

Смежные вопросы