まず、私は Rails を使用していません。このプロジェクトでは Active Record で Sinatra を使用しています。
Model クラスで to_json または as_json をオーバーライドして、いくつかの「デフォルト」オプションを定義できるようにしたいと考えています。たとえば、次のものがあります。
class Vendor < ActiveRecord::Base
def to_json(options = {})
if options.empty?
super :only => [:id, :name]
else
super options
end
end
end
Vendor には、id と name 以外の属性があります。私のルートでは、次のようなものがあります。
@vendors = Vendor.where({})
@vendors.to_json
これ@vendors
は配列ベンダー オブジェクトです (当然のことです)。ただし、返された json はto_json
メソッドを呼び出しておらず、すべてのモデル属性を返しています。
私は実際に変更された sinatra-rest gem (http://github.com/mikeycgto/sinatra-rest) を使用しているため、ルートを変更するオプションは実際にはありません。
この機能を実現する方法についてのアイデアはありますか? 私はsinatra-rest gemで次のようなことをすることができましたが、これはばかげているようです:
@PLURAL.collect! { |obj| obj.to_json }