簡體   English   中英

需要在多個Rails模型上運行任務。 我可以使用數組做循環嗎?

[英]Need to run tasks on several rails models. Can I use an array do loop?

我有一個耙任務,我在一個模型上進行操作。 它更新和刪除表中的內容。 我在為其創建其他模型的其他數據庫中擁有相同的表。 如何在其他模型上運行相同的任務,而無需復制代碼並使事物保持干燥?

例如,這是我的代碼:

# Category is the model
new_region = Category.find_or_initialize_by_code(:code)
... 
...
new_region.save!

我希望能夠使用另一個名為Hierarchy模型執行相同的操作,但是我不想重復這樣的代碼:

# Hierarchy is the model
new_cat_region = Hierarchy.find_or_initialize_by_code(:code)
... 
...
new_cat_region_cat.save!

有沒有辦法創建一個模型數組並像這樣遍歷它們?

   my_models = ['Category', 'Hierarchy']

   my_models.each do |model_name|
     a_region = model_name.find_or_initialize_by_code(:code)
       ... 
       ...
     a_region.save!

數組中的字符串將如何處理? 這樣可以嗎 我對在Rails幕后進行的類型轉換感到不舒服。

您快到了,只需直接使用類對象,如下所示:

my_models = [Category, Hierarchy]

my_models.each do |klass|
  a_region = klass.find_or_initialize_by_code(:code)
    ... 
    ...
  a_region.save!
end

您可以這樣做,

my_models = ['Category', 'Hierarchy']

my_models.each do |model_name|
 a_region = model_name.constantize.find_or_initialize_by_code(:code)
   ... 
   ...
 a_region.save!

constantize將字符串轉換為類

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM