[英]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.