3
我正在運行Ruby 2.1和Mongoid 5.0(無Rails)。如何驗證before_save中的嵌入字段是否發生了變化?
我想跟蹤before_save
回調是否嵌入字段已更改。
我可以使用document.attribute_changed?
或document.changed
方法來檢查正常領域,但不知何故,這些不上關係(embed_one,HAS_ONE等)工作。
在保存文檔之前是否有辦法檢測這些更改?
我的模型是這樣
class Company
include Mongoid::Document
include Mongoid::Attributes::Dynamic
field :name, type: String
#...
embeds_one :address, class_name: 'Address', inverse_of: :address
#...
before_save :activate_flags
def activate_flags
if self.changes.include? 'address'
#self.changes never includes "address"
end
if self.address_changed?
#This throws an exception
end
end
一個我如何保存我的文件的例子是:
#...
company.address = AddressUtilities.parse address
company.save
#After this, the callback is triggered, but self.changes is empty...
#...
我已閱讀文檔和谷歌地獄出來的,但我可以找不到解決方案?
我找到了this gem,但它已經很舊了,並且不適用於較新版本的Mongoid。我想檢查是否有另一種方式做這件事之前,考慮嘗試修復/拉請求寶石...