2011-02-14 50 views
9

我有一個擁有所有者方法的模型對象數組。這個方法需要一個參數傳遞給它才能工作。我需要將模型對象序列化爲json幷包含所有者方法的值。Rails to_json:有參數的方法

我會如何去傳遞參數爲to_json方法我目前使用的

objects.to_json(:methods => :owner) 

包括所有者的方法,但因爲我不是傳遞參數這是行不通的。

+0

你是如何使用JSON的?爲什麼你不能傳遞參數給#to_json? – 2011-02-28 04:45:15

回答

19

注意:評論應用到Rails 2.3,沒有試過瓦特/ Rails的3

我不相信你可以做到這一點瓦特/ to_json的工作方式,所以我覺得你有兩個選擇:

1.通過調用一個方法來將正確的值存儲在'owner'方法在to_json調用期間讀取的變量中,從而準備對象。

2.Overriding as_json在你的模型:

def as_json(options = {}) 
    json = super(options) 
    json['owner'] = owner(options[:param_for_owner]) 
    json 
end 

然後在您的通話to_json只是傳遞:param_for_owner:

objects.to_json(:param_for_owner => 'foo') 

注意,如果你注入你的價值將取決於你的ActiveRecord :: Base.include_root_in_json已配置。

+4

這不完全美麗,但它的作品。 – 2011-08-09 15:32:08