我有一個Ruby on Rails應用程序,我正在爲關聯的iPhone應用程序使用API。自定義to_json方法不在Rails應用程序中調用
我已覆蓋我的Item模型的to_json
方法,以便從iPhone應用程序需要的API請求中返回一些自定義信息。
但是,當我使用內置的rails to_json方法並將我的Item模型作爲關聯參數包含時,我的Item#to_json
方法未被調用,並且僅調用AR對象的默認to_json。
請看下面的代碼(@api_user is a User model object
)
render :json => @api_user.to_json(:include => { :friends => { :include => :items, :except => :api_token } })
我包括friends
協會,又包括items
ASSOCATION,但對項目的默認to_json
被調用,而不是我的自定義to_json。
我錯過了什麼?
這裏是我的Item#to_json
方法
def to_json(options={})
{
:id => self.id,
:name => name,
:description => description,
:url => url,
:quantity => quantity,
:price_range_raw => price_range,
:price_range => human_readable_price_range(price_range),
:can_be_purchased => can_be_purchased?,
:completely_purchased => completely_purchased?,
:remaining_qty => remaining_quantity,
:thumb_photo_url => photo.url(:thumb),
:small_photo_url => photo.url(:small),
:large_photo_url => photo.url(:large),
:priority_raw => priority,
:priority => human_readable_priority(priority)
}.to_json
末
沒有其他車型有#to_json
方法重寫
你可以顯示你的'to_json'方法嗎?我最初的猜測是'User'的'to_json'方法不會遞歸地調用'Item',或者'to_json'方法接受不同的參數,而調用某種'method_missing'方法。 – Karl 2010-07-08 16:53:15
當然,我已經將它添加到 – cpjolicoeur 2010-07-08 17:19:42
我在挖掘源代碼,我的猜測是枚舉的ActiveSupport JSON編碼器不會在每個項目上調用to_json,而是將整個數組作爲一個序列化。我可能不得不寫我自己的映射函數,我想傳回像我想要的數據 – cpjolicoeur 2010-07-08 17:28:10