これは少しややこしいです。
ball.rbを作成します。
class Ball
attr_accessor :change, :level
def initialize(hash)
@change = hash[:change]
@level = hash[:level]
end
end
/model/user.rbのbefore_saveに追加します。
attr_accessor :change, :level
def initialize(hash)
@change = hash[:change]
@level = hash[:level]
end
end
self.balls = balls.map do |ball|
h = {}
[ :change, :level ].each do |key|
h[key] = ball.send(key).to_i
end
h
end
/mode/user.rbに作成します。
h = {}
[ :change, :level ].each do |key|
h[key] = ball.send(key).to_i
end
h
end
def balls
case self[:balls]
when String
YAML.load(self[:balls]).map { |e| Ball.new(e) }
when Array
self[:balls].map { |e| e.kind_of?(Ball) ? e : Ball.new(e) }
end
end
def balls=(value)
case value
when Hash
self[:balls] = value.keys.sort.map do |key|
h = {}
value[key].each do |k, v|
h[k.to_sym] = v
end
h
end
when Array
self[:balls] = value
end
end
xmlに追加します。
case self[:balls]
when String
YAML.load(self[:balls]).map { |e| Ball.new(e) }
when Array
self[:balls].map { |e| e.kind_of?(Ball) ? e : Ball.new(e) }
end
end
def balls=(value)
case value
when Hash
self[:balls] = value.keys.sort.map do |key|
h = {}
value[key].each do |k, v|
h[k.to_sym] = v
end
h
end
when Array
self[:balls] = value
end
end
xml.balls do
balls.each do |b|
xml.ball do
xml.change b.change
xml.level b.level
end
end
end
jsonに追加します。
balls.each do |b|
xml.ball do
xml.change b.change
xml.level b.level
end
end
end
:balls => u.balls
これで問題なく全ての情報が表示されました〜
0 件のコメント:
コメントを投稿