0
我正在使用Rails的mongoDB。所以使用gem mongoid,任何人都知道如何驗證模型中的哈希字段?驗證哈希字段使用mongoid
我正在使用Rails的mongoDB。所以使用gem mongoid,任何人都知道如何驗證模型中的哈希字段?驗證哈希字段使用mongoid
我們必須編寫自定義的驗證方法
尋找一個解決方案,我來出現對我好自定義驗證程序,它可以使用一般。
private
def fix_content(input_hash, valid_fields)
temphash = {}
input_hash.each do |k,v|
k=k.to_sym
if valid_fields.has_key? k
case valid_fields[k]
when 'integer'
v=v.to_i
when 'boolean'
v=(v=='true' || v==true)
when 'float'
v=v.to_f
when 'array'
v = "#{v.class}"=="Array" ? v : []
else
v=v.to_s
end
temphash[k]=v
end
end
temphash
end
讓我們假設我們有這樣的領域:
field :fieldname, type: Hash, default: {hfield1: 0, hfield2: [], hfield3: false}
其實,它不是一個驗證器,這是一個回調。它的工作原理是這樣的:
before_save :fieldname_fix_content
在private
:
def fieldname_fix_content
# we show the callback what fields will be processed. All others will be disposed of
self.fieldname = fix_content(self.fieldname, {:hfield1=> 'integer', :hfield2=>'array', :hfield3=>'boolean'})
end
真正的答案在這裏:https://github.com/mongoid/mongoid/issues/1563 – apneadiving
@apneadiving:其實我通過這個環節去之前,才知道唯一的方法就是自定義驗證。任何如何,謝謝你的答覆。 – Jyothu
這就是答案,是的:) – apneadiving