2012-11-26 40 views
0

我在我的db中有一個表,它將配置保存爲yaml文件。 相應的列被稱爲config如何使用Activerecord解析一個yaml-config數據庫表?

我想閱讀,比方說,前5個配置條目,並將它們轉換回yaml。

我試圖在軌控制檯,如下所示:

Person.pluck(:config).first(5).each do {|c| c.to_yaml}

這似乎是十分錯誤的,我知道。第一件事讓我絆倒:

  • 爲什麼Person.first(5).pluck(:config)會產生一個NoMethodError?
  • 這樣做,我上面的方法將首先採取所有配置,然後檢索前5行,正確的?我如何加快查詢速度?

第二個問題:

  • 什麼是正確的做法,遍歷返回的錶行(例如,第5),並且每個配置列的內容轉換回通過對YAML to_yaml -method?
+0

如果解析YAML字符串,則使用'YAML.parse c'。 – buftlica

回答

1

爲什麼Person.first(5).pluck(:config)會產生NoMethodError?

它產生一個NoMethodError,因爲你正試圖將消息發送pluck到一個數組,它沒有這樣的方法。

這樣做的方式我上面將首先採取所有配置,然後檢索前5行,是否正確?我如何加快查詢速度?

是的,這是正確的。如果你想掐了配置出的只是前五記錄,使用limit

Person.limit(5).pluck(:config) 

有關如何解析config值YAML信息,請參閱this thread

+0

Thx! 奇怪的是,當我嘗試運行irb時,我得到: 'Person.limit(5).pluck(:config).each do {| c | c.to_yaml}' ^ '(irb):61:語法錯誤,意外'}',期待keyword_end' – jottr

+0

對不起,應該沒有'做'在那裏,我解決了我的答案。 –

相關問題