2010-10-15 6 views
0

J'ai trois modèles (et en croissance): ContactEmail, ContactCall, ContactPostalcardComment puis-je faire défiler un ensemble dynamique de modèles d'enregistrement actif?

Je veux faire défiler les trois d'entre eux pour passer par une boucle assez longue.

Un échantillon serait serait la suivante:

import_event = ContactEmail.sugarcrm_is(false) #using searchlogic gem 

La deuxième boucle serait:

import_event = ContactCall.sugarcrm_is(false) 

je serais je suppose que comme une façon de faire quelque chose comme:

event_array = ["ContactEmail", "ContactCall", "ContactPostalcard"] 

event_array.each do |event| 
    import_event = event_array.sugarcrm_is(false) 
    ..... 

end 

Mais je ne sais pas comment faire ça ... merci!

Répondre

2

Il y a plusieurs façons d'attaquer, mais le plus simple est probablement la suivante:

event_array = ["ContactEmail", "ContactCall", "ContactPostalcard"] 
event_array.each do |event| 
    import_event = event.constantize.sugarcrm_is(false) 
    ... 
end 

constantize convertit la chaîne en une constante. Ensuite, vous pouvez faire les appels de classe. C'est une fonction d'assistance de rails.

Vous pouvez aussi tout simplement le tableau contiennent les classes au lieu de chaînes:

event_array = [ContactEmail, ContactCall, ContactPostalcard] 
event_array.each do |event| 
    import_event = event.send(:sugarcrm_is, false) 
    ... 
end 

Il est un peu plus propre, mais tout se résume à la préférence.

+0

cool, oui, j'aime mieux la deuxième façon si ça marche ... merci de vérifier. – Angela

+0

doux, on dirait que c'est ça ... merci +1 – Angela

Questions connexes