2015-04-01 44 views
0

如何將值添加到來自多個select的數據庫中的字符串字段。如何將多選值保存到數據庫中

我場在數據庫:

t.string "types" 

和看法:

<%= f.select :order, [["One", 1], ["Two", 2], ["Three", 3]], {}, { :class => 'form-control', :multiple => true } %> 

也許序列化或JSON是GOOT想法?是否可以保存和簡單的方式閱讀此?

+0

你有什麼打算的價值觀做保存後呢?你的數據庫是否有數組類型的選項(比如postgresql?)。 – Doon 2015-04-01 13:41:28

回答

1

您可以使用軌道序列在列:

serialize :order, Hash 

或爲JSON(這取決於你想用它做什麼):

serialize :order, JSON 

但是,列必須類型'text'而不是'string'以使序列化工作,所以一定要創建一個遷移來改變列的類型。

rails g migration change_order_type_in_table_name 

class ChangeOrderTypeInTableName < ActiveRecord::Migration 
    def up 
    change_column :my_table, :order, :text 
    end 

    def down 
    change_column :my_table, :order, :string 
    end 
end 
1

你可以通過一個類來serialize

class User < ActiveRecord::Base 
     serialize :order, Array 
    end 
    The above ensures that order as an Array: 

    User.new 
    #=> #<User id: nil, order: [], created_at: nil, updated_at: nil> 
    Note that you might have to convert existing fields if the types don't match. 
相關問題