【问题标题】:Can't save array in Mongoid无法在 Mongoid 中保存数组
【发布时间】:2013-03-21 17:58:24
【问题描述】:

我与另一个对象有has_many 关系。正因为如此,Mongoid 创建了一个名为item_ids 的属性作为一个数组,这样我就可以方便地将许多 id 保存为一个数组。但是,每当我尝试保存一个新数组时,它都不会真正保存。在我的 Rails 控制台中,我运行以下代码。

1.9.3p385 :035 > miss.item_ids = [1,2,3]
 => [1, 2, 3] 

1.9.3p385 :036 > miss.save
[paperclip] Saving attachments.
 => true 

1.9.3p385 :037 > miss.item_ids
 => [] 

正如你所看到的,当我保存对象时它返回 true。但是,当我返回查看item_ids 时,我返回了一个空数组。我做错了什么?

【问题讨论】:

  • 检查未命中对象消息
  • full_messages 返回一个空数组。
  • 不要在 Rails 控制台中检查它,而是尝试在数据库控制台中检查,以确保 =)
  • 所以我应该通过 MongoDB 检查?
  • 这只是一个猜测,但尝试一下

标签: ruby-on-rails arrays ruby-on-rails-3 mongodb mongoid


【解决方案1】:

'item_ids' 不是属性,是一种运行一些查询以仅返回相关对象的 ID 并将它们附加到数组中的方法。

当您执行诸如 miss.item_ids = [1,2,3] 之类的操作时,您基本上是在文档上创建该字段,因为您使用的是 Mongo,它会为您存储任何内容。

【讨论】:

    【解决方案2】:

    您正在手动创建关系。 试试miss.items << item

    现在miss.items 应该返回一个项目数组

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多