2012-06-01 28 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