如何从多个select中为数据库中的字符串字段添加值。
我在数据库中有字段:
t.string "types"
并查看:
<%= f.select :order, [["One", 1], ["Two", 2], ["Three", 3]], {}, { :class => 'form-control', :multiple => true } %>
也许序列化或json是goot的想法?是否可以通过简单的方式阅读本文?
答案 0 :(得分:1)
您可以在列上使用rails serialize:
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 :(得分: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.