0
Mongoid虛擬屬性我試圖得到一些虛擬(非持續)的屬性在一些Mongoid模型的JSON表示露面,但似乎無法得到它的工作:在to_json
class MyModel
include Mongoid::Document
def virtual_attribute
@my_attribute || false
end
def virtual_attribute=(value)
@my_attribute=value
end
end
class MyController
def myaction
false_values=MyModel.where(whatever)
true_values=MyModel.where(something_else).map{ |model| model.virtual_attribute=true }
@val['my_models']=false_values+true_values
render json: @val.to_json(:include => {:my_models => {:methods => %w(virtual_attribute)}})
end
end
virtual_attribute
未出現在json中。我究竟做錯了什麼?
編輯 - 好了,所以我想我的實際問題是,我無法弄清楚如何調用該方法virtual_attribute
上的每個對象的數組嵌套在根對象的。
但是,假設我直接調用'to_json'在數組上,對吧?似乎一切似乎表明它調用'virtual_attribute',在我的情況下,'@ val'而不是'@val ['my_models']' - 我只是悲慘地誤會了嗎? – cbmanica
嗯,這取決於。因爲你沒有指定什麼'@ val.class',我認爲它是一個'Hash','Hash'只是將選項傳遞給'@val ['my_models']',然後將選項傳遞給你楷模。 – 2013-03-29 16:18:21
'@ val'實際上是一個Mongoid模型 - 我沒有意識到'方法'通常應用於所有子對象。在任何情況下,我的這個實驗似乎都失敗了... – cbmanica