让我们看看这个当前代码,它可以工作,但它不是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
命令的三次复制粘贴,也许我们可以将这些值以某种方式放在数组或哈希等中......并且只是在这个方法中循环它们。但我对所有这些语言和语法都很陌生,我怎样才能做到这一点?或者如果你有更好的想法来实现这一点,所有人都非常欢迎和赞赏:)
答案 0 :(得分:1)
答案 1 :(得分: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