我在一个名为的活动记录类中有一个实例变量hash_value
。这是一个序列化的哈希。
我想将哈希显示为 XML。打电话合适hash_value.to_xml
吗?很多节点都是数字,XML标签不允许只有数字(或以数字开头)。
我想覆盖to_xml
. hash_value
我不想覆盖所有散列,只是这条记录中的散列。
class ProductVersion < ActiveRecord::base
serialize :hash_value, Hash
def hash_value.to_xml
end
end
我在这里尝试了用 lambda 在单个实例上重新定义单个 ruby 方法的答案,
但它似乎不适用。我怀疑是因为当我加载记录时,它会创建一个新hash_value
对象,因此对原始对象的单例调整没有实际意义。
任何想法都会很棒。我知道我可以编写一个函数 hash_value_to_xml,但我宁愿避免这样做。
感谢第一条评论,我想出了一个解决方案。不是一个好的,但一个有效的。我很想看看有没有更好的方法,因为这个有点味道。
class MyHash < Hash
def to_xml
1/0 #to see if it's run.
end
end
def hash_value
MyHash.new().merge( attributes['hash_value'] );
end