【发布时间】:2010-12-08 04:07:37
【问题描述】:
背景...
我正在编写一个解析器,它查看字符串并尝试确定它们可能包含哪些产品。我创建了自己的 Token 类来提供帮助。
class Token < ActiveRecord::BaseWithoutTable
attr_accessor :regex
attr_accessor :values
end
令牌示例:
Token.new(:regex => /apple iphone 4/, :values => { :brand => "Apple", :product => "iPhone", :version => 4})
(其中哈希键都对应产品表中的数据库列。)
问题出在:在我的Parser 中,当找到Token 时,我尝试将关联的值添加到Product 实例中,如下所示:
token.values.each do |v|
attrib, value = v[0], v[1]
my_product.instance_variable_set(:@attributes, { attrib.to_s => value })
end
这可行,只是我似乎必须同时设置所有属性。如果我分阶段进行(即:当我发现新令牌时),它会用nil 覆盖任何未指定的属性。我错过了什么吗?有没有更好的方法来做到这一点?
【问题讨论】:
-
我们可以看看你的
Product模特吗? -
您使用
instance_variable_set是否有任何特殊原因,或者您只是想更新token.values返回的Hash中key表示的属性?
标签: ruby-on-rails