我正在开发一个Mongo文档存储库来处理数据(使用Ruby中的Mongoid)。 Feed本身具有已创建且最后更新的字段集。我想将它们作为“created_at”和“updated_at”存储在我的Mongoid文档中,但是Mongoid内部不喜欢将它们作为我自己的显式属性,因为当你声明“包含Mongoid :: Timestamps”时它们是字段名称文档。
有没有办法使用“created_at”和“updated_at”作为我自己的字段?或者我是否需要试图找出这些字段的不同名称?
我尝试定义这些字段,它在首次创建文档时有效,但是当我更新文档时,我得到的结果如下:
/mnt/task/__gems__/gems/mongoid-4.0.2/lib/mongoid/atomic/modifiers.rb:121:in `add_operation': undefined method `each' for "2015-05-18 14:55:07":String (NoMethodError)
from /mnt/task/__gems__/gems/mongoid-4.0.2/lib/mongoid/atomic/modifiers.rb:87:in `block in set'
from /mnt/task/__gems__/gems/mongoid-4.0.2/lib/mongoid/atomic/modifiers.rb:84:in `each_pair'
from /mnt/task/__gems__/gems/mongoid-4.0.2/lib/mongoid/atomic/modifiers.rb:84:in `set'
from /mnt/task/__gems__/gems/mongoid-4.0.2/lib/mongoid/atomic.rb:353:in `generate_atomic_updates'
from /mnt/task/__gems__/gems/mongoid-4.0.2/lib/mongoid/atomic.rb:134:in `block in atomic_updates'
from /mnt/task/__gems__/gems/mongoid-4.0.2/lib/mongoid/atomic.rb:132:in `each'
from /mnt/task/__gems__/gems/mongoid-4.0.2/lib/mongoid/atomic.rb:132:in `atomic_updates'
换句话说,它试图对字符串进行迭代,可能是因为在Mongoid中它“相信”它是一个Date对象,即使我已将它定义为String。
我欢迎任何建议。
答案 0 :(得分:0)
我终于想通了。
首先,如果您想手动而不是自动设置created_at或updated_at,可以在对象上设置它们,然后使用“timeless.save”而不是“save”。
其次,事实证明问题是因为时间戳为String类型的对象是嵌入对象,但我忘了执行“embedded_in”反向关系。一旦完成,一切都有效。
所以这最终只是我不能正确理解嵌入式关系的问题。我会把这个留给别人可以从中受益的机会。