Je vais probablement avoir besoin de refactoriser en deux étapes puisque je suis encore en train de développer le projet et d'apprendre les cas d'utilisation au fur et à mesure, car c'est pour me gratter la gueule. J'ai trois modèles: Lettres, Appels, Emails. Ils ont quelque similitude, mais je prévois qu'ils auront aussi des attributs différents, comme vous pouvez le voir à partir de leur description.Comment puis-je faire fonctionner une seule aide sur différents modèles?
Idéalement je pourrais les refactoriser comme des événements, avec un type comme des lettres, des appels, des courriels, mais je ne savais pas comment étendre les sous-classes.
Mon besoin immédiat est ceci: j'ai une aide qui vérifie l'état de savoir si un e-mail (par exemple) a été envoyé à un contact spécifique:
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
je réalisais que je, bien sûr, veux de connaître l'état de savoir si un appel a été fait à un contact aussi bien, donc je l'ai écrit:
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
J'aimerais être en mesure d'avoir juste un show_status unique d'aide où je peux dire show_status (contact, appel) ou show_status (contact, email) et il saura s'il faut chercher l'objet @contact_c all ou @contact_email.
Oui, ce serait plus facile s'il s'agissait seulement de @contact_event, mais je veux faire un petit refactoring pendant que le programme fonctionne, ce qui rendrait la possibilité de faire un historique pour un contact donné beaucoup plus facile .
Merci!
NOTE: Actuellement, j'ai un statut comme attribut de contact_email, contact_call, etc. Contact_email n'est créé que lorsque l'email est envoyé, donc il n'y a pas contact_email si un email n'a pas été envoyé, et je dois savoir que le statut est "unsent" ...
Salut, cela devient une erreur comme suit: pas cette colonne: emails.email_id: SELECT * FROM "emails" Où ("emails" .contact_id = 1 ET ("emails". "email_id" = 2)) L'ID pour les emails serait emails.id Je crois ... mais pas clair comment ajuster cela? – Angela
J'ai enlevé le pluriel et maintenant je reçois ceci: la méthode undefined '> = 'pour {: conditions => {" email_id "=> 2}}: Hash Cela ressemble aux bons paramètres pour: conditions, mais don ne sais pas ce que la méthode non définie> = est ... – Angela
Mis à jour la réponse, jetez un oeil. –