Volt Introduction and Docs

Colecciones Anidadas

Como otras colecciones, los modelos pueden anidarse dentro de store:

store._states.create({name: 'Montana'}).then do |montana|
  montana._cities << {name: 'Bozeman'}
  montana._cities << {name: 'Helena'}
end.then do
  store._states.create({name: 'Idaho'}).then do |idaho|
    idaho._cities << {name: 'Boise'}
    idaho._cities << {name: 'Twin Falls'}
  end
end

Luego podremos observar los modelos que se han creado:

store._states
# => #<Volt::ArrayModel [#<Volt::Model id: "9fd5..66ff", name: "Montana">, #<Volt::Model id: "7d72..f4a1", name: "Idaho">]>
store._states
# => #<Volt::ArrayModel [#<Volt::Model id: "9fd5..66ff", name: "Montana">, #<Volt::Model id: "7d72..f4a1", name: "Idaho">]>

Despues podemos ver nuestro primer estado para observar que ciudades contiene

store._states.first._cities
# => #<Promise(70258435892520): #<Volt::ArrayModel [#<Volt::Model id: "41d5..b233", name: "Bozeman", state_id: "9fd53272ee1e4447c48866ff">, #<Volt::Model id: "f7ea..d07f", name: "Helena", state_id: "9fd53272ee1e4447c48866ff">]>>

Tambien puedes crear el modelo primero para luego insertar la ciudad:

montana = Volt::Model.new({name: 'Montana'})

montana._cities.create({name: 'Bozeman'})
montana._cities.create({name: 'Helena'})

store._states.create(montana)
# => #<Promise(70297821780700): #<Volt::Model id: "84bd..b3be", name: "Montana">>