问题描述: 带有mongoid .changed的Rails5在更新时始终为空。
回答:
在Rails5中,使用mongoid gem进行MongoDB数据库操作时,有时会遇到在更新文档时,使用.changed
方法获取的变更字段始终为空的情况。
这个问题通常是由于mongoid在Rails5中的一些变化导致的。在Rails5之前的版本中,mongoid会在更新文档时自动设置changed
属性,以便在调用.changed
方法时获取变更字段。但是在Rails5中,mongoid不再自动设置changed
属性,导致.changed
方法始终返回空。
解决这个问题的方法是手动设置changed
属性。在更新文档之前,可以使用set
方法手动设置changed
属性,将变更字段添加到changed
属性中。例如:
model.set(:field1 => value1, :field2 => value2)
这样就可以将field1
和field2
添加到changed
属性中,然后在调用.changed
方法时就可以获取到这些变更字段了。
另外,如果需要在更新文档时触发回调方法,可以使用update_attributes
方法代替update
方法。update_attributes
方法会自动设置changed
属性,并触发相应的回调方法。例如:
model.update_attributes(:field1 => value1, :field2 => value2)
推荐的腾讯云相关产品:腾讯云数据库 MongoDB
腾讯云数据库 MongoDB是腾讯云提供的一种高性能、可扩展的NoSQL数据库服务。它基于MongoDB开源数据库引擎,提供了自动分片、数据备份、容灾恢复等功能,适用于各种规模的应用场景。
产品介绍链接地址:腾讯云数据库 MongoDB
请注意,以上答案仅供参考,具体解决方法可能因实际情况而异。
领取专属 10元无门槛券
手把手带您无忧上云