Рельсы mongoid insert_many и ассоциируются с моделью - PullRequest
0 голосов
/ 11 февраля 2020

Я вставляю много записей в рельсы mongoid ds следующим образом:

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)

Это прекрасно работает, однако записи, введенные в Owner, не связаны с Owner. Исследуя продукт, я вижу, что поле owner_id равно нулю.

Я вижу, что https://www.rubydoc.info/gems/mongo/Mongo%2FCollection: insert_many имеет options га sh. Есть ли способ связать записи, введенные в Owner при вставке их через опции. Вы бы сделали это раньше как-нибудь? Как связать каждый product, введенный в Owner, с Owner?

1 Ответ

0 голосов
/ 11 февраля 2020

Это операция на уровне драйвера:

@store.products.collection.insert_many(products)

Драйвер вставляет только те данные, которые вы указали, чтобы вставить, т.е. только ключи / значения в products. Драйвер не имеет сведений об ассоциациях Mongoid или других функциях Mongoid.

Чтобы связать продукты с их магазином, установите store_id для каждого продукта соответственно:

products = [{id: "123", store_id: 1},{id: "345", store_id: 2}]
...