我有一个这样的键值对列表。
PERSON_SUMMARY = {
first_names: %w(Mike Tim Jim kevin Alan Sara John Sammy t'Renée),
last_names: %w(Robinson Jackson Fox Terry Ali Brits Tyson Willis-St.\ Paul),
offenses: [
{ offense_name:'Speeding',
penalties: [
{ penalty_name: 'Prison', severity: 'Medium' },
{ penalty_name: 'Ticket', severity: 'Low' }
]
},
{ offense_name:'Shoplifting',
penalties: [
{ penalty_name: 'Prison', severity: 'Medium' },
{ penalty_name: 'Fine', severity: 'Low' }
]
}
]
}
我只想存储和打印offence_name,**penalty_name** 和severity,但我无法获得正确的语法。
这是我到目前为止所尝试的:
PERSON_SUMMARY[:offenses].each do |offense|
offense_name = offense[:offense_name]
offense[:penalties].each do |penalty|
penalty_name = penalty[:penalty_name]
severity_val = penalty[:severity]
end
end
编辑:最终我需要通过这个函数将它插入到数据库表中:
PersonOffense.where(person_id: person.id).first_or_create(
name: offense_name,
penalty: penalty_name ,
severity: severity_val
end
但是我注意到一个问题,上面有多个惩罚名称。不知道如何插入它们。
例如,我需要在我的表中插入两次进攻名称,以便表中有 2 个条目。
Speeding Prison Medium
Speeding Ticket Low
编辑:我喜欢下面杰西的回答。我如何使用它以与我上面的方法相同的顺序将其插入(插入进攻名称、惩罚名称和严重性以及 Jesse 下面给出的答案的结果。