2012-07-12 91 views
0

我使用下面的代碼段在視圖中創建一組checboxes的存儲陣列在軌道3.0

<div class="field"> 
<b> <%= f.label :scenario %><br /></b> 
    <% Scenarios.all.each do |scenario| -%> 
    <%= check_box_tag 'umvoxq[scenario][]', scenario.id, @umvoxq.scenario.include?(scenario.id.to_s) -%> 
    <%= label_tag :scenario, scenario.name -%> 
    <% end -%> 
</div> 

當我保存的值被成功地存儲在DB並在page.But檢索背面的模型中的它保存在數據庫中的格式是:

| --- 
- '3' 
- '4' 
| 

它就像一個巨大的字符串,帶有換行符。我在DB列varachar,我原以爲會是3,4

我的模型是

class Umvoxq < ActiveRecord::Base 
end 

我也是在模型中使用

serialize:scenario 

嘗試,但它並沒有改變格式。有沒有一種方法可以糾正格式?

+0

我不使用序列化。 – harshit 2012-07-13 00:26:37

回答

1

不管怎樣它都會將它存儲在YAML中。這樣做的最好的辦法是

  • 化妝列的數據類型爲文本模型中的[因爲有些時候它可能不適合爲varchar]
  • 化妝列連載像下面
serialize :scenario, Array 

就是這樣。所以當你從Umvoxq訪問場景時,你會得到數組中的數據。 P:如果你不想改變列的數據類型,那麼你必須將你從表單獲得的參數轉換爲字符串[如2,3,4]並將其存儲到數據庫。

0

也許有點偏離,但看看像Redis或hstore(建立在PostgreSQL上)的鍵值存儲。我認爲他們會很適合那裏。