Когда to_json * почти * достаточно хорош - PullRequest
0 голосов
/ 23 марта 2012

Я рендеринг json для представления в приложении Rails для объекта модели с несколькими уровнями вложенных дочерних объектов. Изначально to_json был достаточно хорош, поскольку у меня не было необходимости добавлять / изменять / переименовывать что-либо из объекта модели. Однако теперь мне нужно вставить некоторые URI в json (для некоторых вложенных дочерних объектов), которых нет в объектах модели. Я смотрю на использование RABL, но из того, что я видел до сих пор, похоже, мне нужно будет указать гораздо больше форматирования для объектов, для которых я все еще хочу использовать поведение по умолчанию to_json, просто чтобы иметь возможность точка, в которой я могу добавить URI для некоторых дочерних объектов. То, что я считаю нужным, - это способ использовать to_json для графа объектов и иметь возможность указать, что только объекты определенного типа должны обрабатываться по-разному. Кто-нибудь делал что-то подобное с RABL или вообще знает о лучшем подходе?

1 Ответ

1 голос
/ 12 апреля 2012

Вы можете переопределить as_json в модели, чтобы добавить дополнительные вещи.

Например,

def some_url
    "http://google.com"
end



def as_json(options={})
    options = User.json_options(options)
    super(options)
end

def self.json_options(options = {})
    options ||= {} # need this because to_json without options will pass nil to as_json
    options[:methods] ||= []
    options[:methods] << :some_url
    options
end

Затем при вызове to_json метод будет включен.

...