使用Better ActiveRecord命令和数组Hashes在Rails中保持代码DRY



让我们看看当前的代码,它可以工作,但不是DRY!

def create_key_performance_indicators
  organization_aco = Organization.find_by_name('ACO').id
  KeyPerformanceIndicator.where(name: 'ED Visits per 1,000').first_or_create(
    target: 100,
    organization_id: organization_aco
  )
  KeyPerformanceIndicator.where(name: 'Average Length of Stay').first_or_create(
    target: 5,
    organization_id: organization_aco
  )
  KeyPerformanceIndicator.where(name: 'Admits per 1,000').first_or_create(
    target: 100,
    organization_id: organization_aco
  )
end

因此,有一个名为KeyPerformanceIndicators的表,该表具有指向organization表的带有organization_id字段的外键。

首先要清理的是,复制粘贴KeyPerformanceIndictor.where命令三次,也许我们可以以某种方式将这些值放在数组或哈希等中……然后在这个方法中循环它们。但我对所有这些语言和语法都很陌生,我该如何做到这一点?或者,如果你有更好的想法来实现这一点,我们都非常欢迎和赞赏:)

怎么样。。。

def create_key_performance_indicators
  organization_aco = Organization.find_by_name('ACO').id
  [
    [ 'ED Visits per 1,000'    , 100 ] ,
    [ 'Average Length of Stay' , 5   ] ,
    [ 'Admits per 1,000'       , 100 ]
  ].each do |name, target|
      KeyPerformanceIndicator.where(name: name).first_or_create(
        target: target,
        organization_id: organization_aco
      )
  end
end

请看一下要点:https://gist.github.com/cthulhu666/4972937

最新更新