首先,我沒有使用Rails。我使用Active Record將Sinatra用於此項目。在模型陣列上的有效記錄to_json as_json
我希望能夠覆蓋我的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
其中供應商擁有的不僅僅是id和name。在我的路線我有類似如下:
@vendors = Vendor.where({})
@vendors.to_json
這裏@vendors
是陣列供應商對象(明顯)。然而,返回的json並沒有調用我的to_json
方法,而是返回了所有的模型屬性。
我真的沒有修改路由的選項,因爲我實際上使用了修改後的sinatra-rest gem(http://github.com/mikeycgto/sinatra-rest)。
關於如何實現此功能的任何想法?我可以做這樣的事情在我屈休息寶石以下但這似乎愚蠢:
@PLURAL.collect! { |obj| obj.to_json }
正是我所需要的。我喜歡這樣一個事實,即我也可以添加不屬於屬性的屬性。萬分感謝! – mikeycgto 2010-10-22 19:53:48