Мне, вероятно, понадобится провести рефакторинг в два этапа, так как я все еще разрабатываю проект и изучаю варианты использования по мере продвижения, так как он должен устранить мой собственный зуд.У меня есть три модели: письма, звонки, электронные письма.Они имеют некоторую схожесть, но я ожидаю, что они также будут иметь некоторые другие атрибуты, как вы можете понять из их описания.
В идеале я мог бы реорганизовать их как События, с типом как Письма, Звонки, Электронные письма, но неЯ не знаю, как расширить подклассы.
Моя непосредственная потребность заключается в следующем: у меня есть помощник, который проверяет, было ли отправлено электронное письмо (например) определенному контакту:
def show_email_status(contact, email)
@contact_email = ContactEmail.find(:first,
:conditions => {:contact_id => contact.id, :email_id => email.id })
if ! @contact_email.nil?
return @contact_email.status
end
end
Я понял, что я, конечно, хочу знать статус того, был ли сделан вызов и контакту, поэтому я написал:
def show_call_status(contact, call)
@contact_call = ContactCall.find(:first,
:conditions => {:contact_id => contact.id, :call_id => call.id })
if ! @contact_call.nil?
return @contact_call.status
end
end
Я хотел бы иметь возможность просто иметьодин помощник show_status, где я могу сказать show_status (контакт, звонок) или show_status (контакт, электронная почта), и он будет знать, искать ли объект @contact_call или @ contact_email.
Да, было бы проще, если бы онбыли просто @contact_event, но я хочу сделать небольшой рефакторинг, пока я запускаю программу, и это сделало бы возможность сделать историю для данного контакта, мНамного проще.
Спасибо!
ПРИМЕЧАНИЕ. В настоящее время у меня есть статус атрибута contact_email, contact_call и т. д. Contact_email создается только при отправке электронного письма, поэтому contact_email не создается, еслиэлектронное письмо не было отправлено, и мне нужно знать, что статус «неотправлен» ...