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

そのため、 Organizationテーブルへの organization_id フィールドを持つ外部キーを持つKeyPerformanceIndicatorsというテーブルがあります。

最初にクリーンアップする必要があるのは、KeyPerformanceIndictor.whereコマンドの 3 回のコピー アンド ペーストです。おそらく、これらの値を何らかの方法で配列やハッシュなどに配置し、このメソッド内でそれらをループするだけです。しかし、私はこのすべての言語と構文に非常に慣れていません。どうすればこれを達成できますか? または、これを達成するためのより良いアイデアがあれば、大歓迎です:)

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 に答える