0

让我们看一下当前的代码,它可以工作,但不是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_id 字段到组织表。

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

4

2 回答 2

1

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

于 2013-02-17T19:17:33.170 回答
1

怎么样...

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
于 2013-02-17T19:29:48.413 回答