如何将多选值保存到数据库

时间:2015-04-01 13:38:56

标签: ruby-on-rails ruby ruby-on-rails-4

如何从多个select中为数据库中的字符串字段添加值。

我在数据库中有字段:

t.string   "types"

并查看:

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

也许序列化或json是goot的想法?是否可以通过简单的方式阅读本文?

2 个答案:

答案 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.