Во-первых, я не использую Rails.Я использую Синатру для этого проекта с Active Record.
Я хочу иметь возможность переопределить либо to_json, либо as_json в моем классе Model, чтобы он определял некоторые параметры по умолчанию.Например, у меня есть следующее:
class Vendor < ActiveRecord::Base
def to_json(options = {})
if options.empty?
super :only => [:id, :name]
else
super options
end
end
end
где Vendor имеет больше атрибутов, чем просто идентификатор и имя.В моем маршруте у меня есть что-то вроде следующего:
@vendors = Vendor.where({})
@vendors.to_json
Здесь @vendors
- это объекты вендора Array (очевидно).Однако возвращенный json не вызывает мой метод to_json
и возвращает все атрибуты моделей.
У меня нет возможности изменить маршрут, потому что я на самом деле использую модифицированный камень sinatra-rest (http://github.com/mikeycgto/sinatra-rest).
Любые идеи о том, как достичь этой функциональности? Я мог бысделай что-то вроде следующего в моем драгоценном камне sinatra-rest, но это кажется глупым:
@PLURAL.collect! { |obj| obj.to_json }