首先,我没有使用 Rails。我在这个项目中使用 Sinatra 和 Active Record。
我希望能够在我的 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 }