Ich habe eine questions
Liste, und ich muss sie trennen. Die Beziehung istRails Hash kombinieren durch ihren Wert
Question_set has_many questions
BookVolume has_many questions
Subject has_many book_volumes
Publisher has_many subjects
Section has_many :questions
Jetzt habe ich nur setzen questions
und ihre relative Modell id
, name
in hash
innerhalb eines array
.
data = []
question_set.questions.each do |q|
data << {publisher: {id: q.publisher.id, name: q.publisher.name}, subject: {id: q.book_volume.subject.id, name: q.book_volume.subject.name}, volume: {id: q.book_volume_id, name: q.book_volume.name}, chapter: [{id: q.section_id, name: q.section.name}]}
end
Daher ist die data
grundsätzlich
>>data
[
{
:publisher => {
:id => 96,
:name => "P1"
},
:subject => {
:id => 233,
:name => "S1"
},
:volume => {
:id => 1136,
:name => "V1"
},
:chapter => [
{
:id => 16155,
:name => "C1"
}
]
},
{
:publisher => {
:id => 96,
:name => "P1"
},
:subject => {
:id => 233,
:name => "S1"
},
:volume => {
:id => 1136,
:name => "V1"
},
:chapter => [
{
:id => 16158,
:name => "C2"
}
]
}
]
jedoch sein wird, möchte ich die chapter
kombiniert werden, wenn sie die gleiche publisher
, subject
und volume
Also in diesem Fall, erhalten, wird es sein,
>>data
[
{
:publisher => {
:id => 96,
:name => "P1"
},
:subject => {
:id => 233,
:name => "S1"
},
:volume => {
:id => 1136,
:name => "V1"
},
:chapter => [
{
:id => 16155,
:name => "C2"
},
{
:id => 16158,
:name => "C2"
}
]
}
]
Ich bin mir nicht sicher über Sie sagte 'Lassen arr gleich der Reihe von Hashes (das erste Array oben), können wir folgendes tun: Bedeutet es' arr = data'? –
Wenn die Variable 'data' dieses Array enthält, ja. Wenn Sie ein Beispiel angeben, ist es hilfreich, jedem Eingabeobjekt eine Variable zuzuweisen (z. B. "data = [{: publisher => ...]"). Auf diese Weise können Leser auf diese Variable (hier nur "Daten") in Kommentaren und Antworten verweisen, ohne sie definieren zu müssen. Sie können Ihre Frage bearbeiten, um dies zu tun. –
Ich habe den Variablennamen 'data = []' definiert und in meine Frage 'hash' eingefügt, meinst du das? –