我的 AR:B 中有一个不可序列化的属性。
o = Discussion.find(6)
Marshal.dump(o)
TypeError: no marshal_dump is defined for class Proc
from (irb):10:in `dump'
我知道罪魁祸首,我想要的是将这个变量设置为零
在进行任何序列化之前。
我可以做到这一点,但我坚持使用覆盖 marshal_dump 的正确方法
def marshal_dump
@problem = nil
# what is the right return here?
end
或者有没有办法告诉 Ruby 或 AR 不要序列化对象?
您的专业marshal_dump
应该返回一个包含要序列化的数据的对象。该对象将被传回marshal_load
在加载时。
在这种情况下,我假设您要转储的数据对应于所有 AR 属性(并且仅对应于这些属性),所以我会尝试:
def marshal_dump
attributes
end
def marshal_load(data)
send :attributes=, data, false # false to override even protected attributes
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)