需要在多个rails模型上运行任务.我可以使用数组执行循环吗?

Hor*_*ice 0 ruby activerecord ruby-on-rails

我有一个rake任务,我在一个模型上操作.它更新并删除表中的内容.我在其他数据库中有相同的表,我为其创建了其他模型.如何在不重复代码和保持干燥的情况下在其他模型上运行相同的任务?

例如,这是我的代码:

# Category is the model
new_region = Category.find_or_initialize_by_code(:code)
... 
...
new_region.save!
Run Code Online (Sandbox Code Playgroud)

我希望能够用另一个名为的模型做同样的事情Hierarchy 但是我不想像这样复制代码:

# Hierarchy is the model
new_cat_region = Hierarchy.find_or_initialize_by_code(:code)
... 
...
new_cat_region_cat.save!
Run Code Online (Sandbox Code Playgroud)

有没有办法我可以创建一个模型数组并像这样循环它们?

   my_models = ['Category', 'Hierarchy']

   my_models.each do |model_name|
     a_region = model_name.find_or_initialize_by_code(:code)
       ... 
       ...
     a_region.save!
Run Code Online (Sandbox Code Playgroud)

如何处理数组中的字符串?这可以吗?对于可能在轨道幕后发生的类型转换,我感到很不舒服.

Dav*_* S. 5

你几乎就在那里,只需直接使用类对象,如下所示:

my_models = [Category, Hierarchy]

my_models.each do |klass|
  a_region = klass.find_or_initialize_by_code(:code)
    ... 
    ...
  a_region.save!
end
Run Code Online (Sandbox Code Playgroud)