2013-02-20 136 views
0

我有幾個列的員工表。其中一列是文本字段,其中一些數據以以下格式存儲在其中:Rails訪問存儲爲表格字段內的JSON數據的字段

:last_working_day => nil, 
:first_working_day => <some data>, 
:reason_for_leave1 => nil 

等等。以上佈局僅僅是一個例子,而不是實際的佈局。

我需要訪問這些值。我可以訪問包含這些數據的字段,但是如何將這些數據提取爲關鍵值對?

+0

如果它是json字符串,那麼你可以使用'JSON.parse('your_string')'。 – 2013-02-20 07:49:32

+0

你可以發表表格的模式(至少是相關部分)嗎?也就是說,如果你在數據庫中存儲這樣的數據,你最好使用Hstore而不是文本字段。 http://schneems.com/post/19298469372/you-got-nosql-in-my-postgres-using-hstore-in-rails – 2013-02-20 08:12:42

+0

@AlexGhiculescu Ghiculescu:我不允許更改架構。所以不能使用Hstore。它必須是它被定義的方式。 – sumitshining 2013-02-20 08:37:23

回答

0

你可以用這個

f.split(',').inject({}) { |h, e| k, v = e.split('=>').map{ |s| s.strip}; v = nil if v == 'nil'; h[k[1..-1].to_sym] = v ; h } 

,其中 'F' 是你提供的字段開始。 嚴重的是,使用HStore或至少將其存儲爲YAML或JSON。 Rails可以自動處理序列化爲YAML的數據。

+0

謝謝@cthulhu。我真的搞砸了數據。得到它了。 – sumitshining 2013-02-21 05:34:50