如何循环动态一组活动记录模型?

时间:2010-10-15 19:11:16

标签: ruby-on-rails model

我有三个模型(并且还在增长):ContactEmail,ContactCall,ContactPostalcard

我想循环完成其中的三个循环。

样本如下:

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

第二个循环是:

import_event = ContactCall.sugarcrm_is(false)

我想我想要做一些像这样的事情:

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

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

end

但不确定该怎么做...谢谢!

1 个答案:

答案 0 :(得分:2)

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

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

constantize将字符串转换为常量。然后你可以进行类调用。这是一个rails帮助函数。

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

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

它有点干净,但这一切都归结为偏好。