2014-03-25 28 views
1

我有一個帶有文本屬性response的模型。這個屬性包含一個長JSON創建一個不干擾Rails交互的getter方法

我想這樣做

def response 
JSON.parse(response) 
end 

所以每次的字符串化版本,我需要它,我只想呼叫響應

然而,這是一個問題,因爲響應getter在其他地方的Rails中使用。

我能說出方法parsed_response或類似的東西,但我覺得這是不自然的

有沒有辦法有一個私人的getter?

+3

爲什麼'parsed_response'不自然?你正在返回'JSON.parse(response)'的結果,所以對我來說看起來很自然! – mcfinnigan

+0

是的,到目前爲止,這就是我在做什麼,但總是很高興學習新的東西 –

回答

2

在Rails中有一種內置的自動序列化/反序列化屬性的方法。 (我假設你正在使用ActiveRecord)。您可以指定列被序列化,像這樣:

class MyModel < ActiveRecord::Base 
    serialize :response, JSON 
end 

你不會有一個問題,然後覆蓋默認getter方法爲response屬性,它仍然會在自己的代碼自動反序列化。