首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在创建virtus对象之前选择属性?

如何在创建virtus对象之前选择属性?
EN

Stack Overflow用户
提问于 2016-03-19 20:53:44
回答 1查看 246关注 0票数 1

我的散列中有比Virtus在类中定义的更多的属性。在实例化virtus模型之前,我想在virtus模型中选择这些属性。

代码语言:javascript
复制
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,仍然创建对象。

我试图重写初始化方法并插入一个剔除方法,但这似乎不起作用。显然,在对象创建过程中,大量赋值属性会经过不同的路径?

选择这些属性的最好方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-21 04:35:22

1.0.5似乎没问题;您使用的是哪个版本?

代码语言:javascript
复制
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">
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36107022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档