J'insère de nombreux enregistrements dans un rail mongoid ds en tant que tel:

products = [{id: "123"},{id: "345"}]
products.each do |product|
    product['product_id'] = product.delete 'id'
end
@store = current_user.store
# Clear the existing collection
@store.products.destroy_all
@store.products.collection.insert_many(products)

Cela fonctionne à merveille, cependant, les enregistrements entrés dans Owner ne sont pas associés au Owner. En examinant un produit, je constate que le champ owner_id est nul.

Je vois que https://www.rubydoc.info/gems/mongo/Mongo %2FCollection:insert_many a le hachage options. Existe-t-il un moyen d'associer les enregistrements saisis dans le Owner lors de leur insertion via les options. Le feriez-vous avant d'une manière ou d'une autre ? Comment associer chaque product entré dans le Owner avec le Owner ?

0
Ben 11 févr. 2020 à 00:25

1 réponse

Meilleure réponse

Il s'agit d'une opération au niveau du conducteur :

@store.products.collection.insert_many(products)

Le pilote insère uniquement les données que vous lui demandez d'insérer, c'est-à-dire uniquement les clés/valeurs dans products. Le conducteur n'a aucune connaissance des associations mongoides ou de toute autre caractéristique mongoide.

Pour associer des produits à leur boutique, définissez store_id sur chaque produit en conséquence :

products = [{id: "123", store_id: 1},{id: "345", store_id: 2}]
0
D. SM 10 févr. 2020 à 22:33