我的散列中有比Virtus在类中定义的更多的属性。在实例化virtus模型之前,我想在virtus模型中选择这些属性。
test_hash = {:x="stuff" , :y ="stuff2", :z="stuff3"}
def myObject
include Virtus.model
attribute :x, String
attribute :y, String
end
myObject.new(test_hash)这在NoMethodError: undefined method 'z='中失败了,我只想让它安静地丢弃z,仍然创建对象。
我试图重写初始化方法并插入一个剔除方法,但这似乎不起作用。显然,在对象创建过程中,大量赋值属性会经过不同的路径?
选择这些属性的最好方法?
发布于 2016-03-21 04:35:22
1.0.5似乎没问题;您使用的是哪个版本?
irb(main):001:0> require 'virtus'
=> true
irb(main):002:0> class MyObject
irb(main):003:1> include Virtus.model
irb(main):004:1> attribute :x, String
irb(main):005:1> attribute :y, String
irb(main):006:1> end
=> MyObject
irb(main):007:0> hash = { x: 'x', y: 'y', z: 'z' }
=> {:x=>"x", :y=>"y", :z=>"z"}
irb(main):008:0> MyObject.new hash
=> #<MyObject:0x007ff0e3e8d9e8 @x="x", @y="y">https://stackoverflow.com/questions/36107022
复制相似问题