我正在使用DataMapper進行數據庫訪問。我的目標是將模型作爲只讀對象發送到Web服務。這是我目前的嘗試:將#to_yaml添加到DataMapper模型
class User
include DataMapper::Resource
def to_yaml(opts = {})
mini_me = OpenStruct.new
instance_variables.each do |var|
next if /^@_/ =~ var.to_s
mini_me.send("#{var.to_s.gsub(/^@/, '')}=", instance_variable_get(var))
end
mini_me.to_yaml(opts)
end
....
end
YAML::ENGINE.yamler = 'psych'
u = User.get("hulk")
p u.to_yaml
# => "--- !ruby/object:OpenStruct\ntable:\n :uid: hulk\n :uidNumber: 1000\n :gidNumber: 1001\n :email: [email protected]\n :dn: uid=hulk,ou=People,o=example\n :name: Hulk\n :displayName: Hulk\n :description: Hulk\n :homeDirectory: /home/hulk\n :accountFlags: ! '[U ]'\n :sambaSID: S-1-5-21-......\nmodifiable: true\n"
p [ u ].to_yaml # TypeError: can't dump anonymous class Class
任何想法如何使這項工作和擺脫例外?
感謝, krissi
'p [u] .map(&:to_yaml)' – apneadiving
這不起作用。它給了我一系列yamls。當我對陣列進行Yaml字符串yaml'd。它適用於這一層,但我需要一個乾淨的方式,無處不在 – krissi
然後你必須猴子補丁陣列,並把'to_yaml'方法 – apneadiving