私はまだプロジェクトを開発していて、自分のかゆみを掻くために使用例を学習しているので、おそらく2つのステップでリファクタリングする必要があります。私は3つのモデルを持っています:手紙、電話、電子メール。それらにはいくつかの類似点がありますが、説明からわかるように、いくつかの異なる属性もあると思います。
理想的には、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(contact、call)またはshow_status(contact、email)と言うことができる単一のヘルパーshow_statusを作成できるようにしたいと思います。これにより、オブジェクト@contact_callまたは@contact_emailのどちらを検索するかがわかります。
はい、@ contact_eventだけの方が簡単ですが、プログラムを起動して実行している間に小さなリファクタリングを実行したいので、特定の連絡先の履歴を作成する機能がはるかに簡単になります。
ありがとう!
注:現在、contact_email、contact_callなどの属性としてステータスがあります。Contact_emailはメールが送信されたときにのみ作成されるため、メールが送信されていない場合はcontact_emailは作成されません。また、ステータスが「」であることを知る必要があります。未送信」..。