Ruby on rails 如何循环使用一组动态的活动记录模型?

Ruby on rails 如何循环使用一组动态的活动记录模型?,ruby-on-rails,model,Ruby On Rails,Model,我有三种型号(而且还在增长):ContactEmail、ContactCall、ContactPostalcard 我想通过三个循环来完成一个相当长的循环 样本如下: import_event = ContactEmail.sugarcrm_is(false) #using searchlogic gem event_array = ["ContactEmail", "ContactCall", "ContactPostalcard"] event_array.each do |event|

我有三种型号(而且还在增长):ContactEmail、ContactCall、ContactPostalcard

我想通过三个循环来完成一个相当长的循环

样本如下:

import_event = ContactEmail.sugarcrm_is(false) #using searchlogic gem
event_array = ["ContactEmail", "ContactCall", "ContactPostalcard"]
event_array.each do |event|
  import_event = event.constantize.sugarcrm_is(false)
  ...
end
第二个循环是:

import_event = ContactCall.sugarcrm_is(false)
我想我想要一种方法来做一些事情,比如:

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

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

end

但不知道怎么做…谢谢

有多种方法可以攻击它,但最简单的方法可能是:

import_event = ContactEmail.sugarcrm_is(false) #using searchlogic gem
event_array = ["ContactEmail", "ContactCall", "ContactPostalcard"]
event_array.each do |event|
  import_event = event.constantize.sugarcrm_is(false)
  ...
end
将字符串转换为常量。然后你可以进行类调用。这是一个rails辅助函数

也可以让数组包含类而不是字符串:

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

有点干净,但这都取决于偏好。

酷,是的,我更喜欢第二种方法,如果它有效的话……谢谢,我会检查它的。