2012-06-01 50 views
0

有沒有辦法在初始化期間驗證在BinData :: Record上設置的字段?每個參數的check_value似乎從輸入流在初始化時驗證BinData :: Record的記錄

class Foo < BinData::Record 
    uint8 :bar,:check_value=>lambda{raise 'Here is an error'} 
end 

Foo.new(:bar=>5) #Does not raise validation exception 

我嘗試添加一個「initialize_instance」,其中它在「to_binary_s」讀讀書後才能評價,但它引發了一些其他錯誤,大概是因爲該對象沒有完全實例化。

回答

0

編寫一個def initialize方法。然後把它的驗證。 初始化在對象實例化上運行,因此必須進行檢查。

+0

對不起,它不那麼簡單。該庫檢查是否已寫入初始化方法並採取其他操作 – FooManChew

+0

您無法用bindata記錄重寫初始化,他們建議改爲創建一個'initialize_instance'方法。 – amenthes