【问题标题】:Rails mongoid insert_many and associate with modelRails mongoid insert_many 并与模型关联
【发布时间】:2020-02-10 21:25:07
【问题描述】:

我将许多记录插入到 rails 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 为 nil。

我看到https://www.rubydoc.info/gems/mongo/Mongo%2FCollection:insert_manyoptions 哈希。有没有办法在通过选项插入时关联输入到Owner 的记录。你会以某种方式之前这样做吗?如何将输入到Owner 的每个productOwner 关联?

【问题讨论】:

  • Owner 是什么?
  • @OlegP Owner 只是一个模型。所有者 has_many :products。 - 我更新了我的问题以使其更清晰,现在改用商店模型。看看

标签: ruby-on-rails ruby mongodb mongoid


【解决方案1】:

这是一个驱动级操作:

@store.products.collection.insert_many(products)

驱动程序只插入您告诉它插入的数据,即只插入products 中的键/值。驱动程序不了解 Mongoid 关联或任何其他 Mongoid 功能。

要将产品与其商店相关联,请在每个产品上相应地设置store_id

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

【讨论】:

  • 有道理。谢谢。我会用products.each do |product| product['product_id'] = product.delete 'id' product['store_id'] = current_user.store.id end 编辑你的答案,因为 current_user.id 会将 BSON 对象输入到商店产品中,而不是简单的字符串 ID
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多