Blog 2011-09-09
Слияние HashWithIndifferentAccess с обычными хешами
Сегодня у нас перестали ходить отчеты по почте. Ходили, ходили и вдруг перестали. Kлассы выглядели следующим образом (ненужные подробности я опустил).
class ReportSender
def initialize(report_instance)
@report_instance = report_instance
@params = report_instance.params
@emails = @params.delete(:mail_to)
end
class Report
def initialize(params = {})
@params = self.class.default_values.merge(params)
end
К классам отчетов были добавлены значения по-умолчанию, и, как оказалось, из-за них были все проблемы.
Хеш params
, которые передается в класс Report
— это тот самый params
из контроллера. У него базовый класс — HashWithIndifferentAccess
.