我可能需要分两步进行重构,因为我仍在开发项目并学习用例,因为这是为了解决我自己的问题。我有三个模型:信件、电话、电子邮件。它们有一些相似之处,但我预计它们也会有一些不同的属性,正如你可以从它们的描述中看出的那样。
理想情况下,我可以将它们重构为事件,类型为 Letters、Calls、Emails,但不知道如何扩展子类。
我的迫切需要是:我有一个助手可以检查电子邮件(例如)是否发送给特定联系人的状态:
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(contact,call) 或 show_status(contact,email),它会知道是查找对象 @contact_call 还是 @contact_email。
是的,如果它只是@contact_event 会更容易,但我想在程序启动并运行时做一个小的重构,这将使为给定联系人创建历史记录的能力变得更加容易。
谢谢!
注意:目前我有状态作为contact_email,contact_call等的属性。Contact_email仅在发送电子邮件时创建,因此如果尚未发送电子邮件,则没有contact_email,我需要知道状态是“未发送”...