Идея декоратора состоит в том, чтобы просто "расширить модель" методами представления для использования в представлениях - либо , непосредственно вызывая object
, либо делегируя методы .Декоратор не выполняет действия контроллера, как render 403
;это не его работа.
Например, вы можете написать этот декоратор как:
class DriverApplicantDecorator < Draper::Decorator
def masked_ssn
mask_string(object.ssn)
end
def masked_date_of_birth
mask_string(object.date_of_birth)
end
private
def mask_string(value)
"*******#{value.last(4)}"
end
end
По вашему мнению, вы можете просто вызывать эти методы - пока вы ссылка на оформленную модель .
Например, это может быть:
td.word-break.hidden-value= form.dot_application.driver_applicant.decorate.masked_ssn
(или в другом месте, как указано выше по ссылке, вы не можетенужно явно вызвать decorate
в представлении, подобном этому.)