https://github.com/AnthonyCaliendo/action_mailer_callbacks
Я обнаружил, что этот плагин довольно легко помог мне решить проблему (как за < 5 минут). Я просто изменяю @@ smtp_settings для конкретного почтовика в before_deliver, а затем меняю его обратно на значения по умолчанию в after_deliver. Используя этот подход, мне нужно только добавить обратные вызовы к почтовым программам, которым требуется @@ smtp_settings, отличный от значения по умолчанию.
class CustomMailer < ActionMailer::Base
before_deliver do |mail|
self.smtp_settings = custom_settings
end
after_deliver do |mail|
self.smtp_settings = default_settings
end
def some_message
subject "blah"
recipients "blah@blah.com"
from "ruby.ninja@ninjaness.com"
body "You can haz Ninja rb skillz!"
attachment some_doc
end
end
Использование:
AND oh.tran_date BETWEEN TRUNC(SYSDATE - 1) AND TRUNC(SYSDATE) - 1/86400
Ссылка: TRUNC
Вызов функции на tran_date
означает, что оптимизатор не сможет использовать индекс (при условии один существует), связанный с ним. Некоторые базы данных, такие как Oracle, поддерживают индексы на основе функций, которые позволяют выполнять функции с данными, чтобы минимизировать влияние в таких ситуациях, но администраторы баз данных IME этого не допускают. И я согласен - в данном случае они действительно не нужны.
to_char(tran_date, 'yyyy-mm-dd') = to_char(sysdate-1, 'yyyy-mm-dd')
Если вы не поддерживаете будущие датированные транзакции, то может сработать что-то вроде этого:
AND oh.tran_date >= trunc(sysdate-1)