Вот простой класс ActiveResource. У него есть некоторые переменные экземпляра и, возможно, даже некоторые методы, но он не поддерживается никакими данными.
ruby-1.8.7-p299 > class Box < ActiveResource::Base;
attr_accessor :a, :b, :c, :d;
end
=> nil
Давайте заполним это:
ruby-1.8.7-p299 > bx = Box.new; bx.a = 100; bx.b = 200;
bx.c = 300; bx.d = 400;
bx
=> #<Box:0xb5841c54 @attributes={}, @b=200, @a=100,
@prefix_options={}, @c=300, @d=400>
Пока все хорошо. Как насчет того, чтобы выбрать некоторые из этих переменных экземпляра для его модели JSON? Скажем, что мы заботимся только о b
и c
, но не a
, d
или о чем-либо еще.
ruby-1.8.7-p299 > bx.to_json({:only => ['b', 'c']})
=> "{}"
Однако это не работает, поскольку у нас нет атрибутов , называемых 'b' или 'c', только значения. Как мы можем получить что-то подобное?
{ "box": { "b": 200, "c": 300 } }
Еще лучше, мы можем получить это без наследования от ActiveResource?