让我们看看当前的代码,它可以工作,但不是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