このようなキーと値のペアのリストがあります。
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' }
]
}
]
}
offense_name、** penalty_name **、severityを1つずつ保存して出力したいのですが、正しい構文を取得できません。
これが私がこれまでに試したことです:
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つのエントリがあるように、テーブルにoffense_nameを2回挿入する必要があります。
Speeding Prison Medium
Speeding Ticket Low
編集:私は以下のジェシーの答えが好きです。上記の方法と同じ順序で挿入するにはどうすればよいですか(offense_name、penalty_name、severityを挿入し、Jesseが以下に回答した結果を示します)。