我正在为数据提要开发一个Mongo文档存储(在Ruby中使用Mongoid )。提要本身有一组已创建和最后更新的字段。我想将它们作为"created_at“和"updated_at”存储在我的Mongoid文档中,但Mongoid内部不喜欢将它们作为我自己的显式属性,因为当您在文档上声明"include 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对象,尽管我已经将它定义为一个字符串。
我欢迎任何建议。
发布于 2015-07-26 21:52:58
我终于想通了。
首先,如果你想手动设置created_at或updated_at而不是自动设置,你可以在对象上设置它们,然后使用"timeless.save“而不是”timeless.save“。
其次,问题是因为时间戳为字符串类型的对象是一个嵌入式对象,但我忘记了做"embedded_in“反向关系。一旦这样做了,一切就都正常了。
所以这最终只是我没有正确理解嵌入关系的一个问题。我把这篇文章放在一边,以防其他人从中受益。
https://stackoverflow.com/questions/31628021
复制相似问题