在Rails中存储数组

时间:2015-03-16 09:23:07

标签: ruby-on-rails

我想在我的数据库字段中存储多个值(整数)。为此,我使用

serialize :subtype, Array

每当我提交表单时,我都会获得子类型

的参数
"subtype"=>["",
 "1",
 "3"],

现在我尝试将此值保存到我的数据库中。所以我尝试做那样的事情

@request.subtype << params[:subtype][1] << params[:subtype][2]
@request.save

当然它不起作用。我怎样才能做到这一点?如何存储这些值。 这是我的迁移:

create_table :requests do |t|
			....
			t.integer :subtype
			....
      t.timestamps null: false
    end
在我的表格中,我有:

<%= f.grouped_collection_select :subtype, 
RequestType.order(:typeName), :RequestSubTypes, :typeName, :id, :subTypeName, 
{include_blank:false},{:class => "subTypes", multiple: true }  %>

2 个答案:

答案 0 :(得分:1)

序列化字段不能是integer类型。所以将其更改为text类型

运行此迁移

rails g migration add_subtype_to_requests subtype:text

class Migration000000
    def change
        add_column :requests, :subtype, :text
    end
end

然后这应该适合你

@request.save

修改

在你的控制器中允许子类型数组

def request_params
   params.require(:request).permit(:field1, :field2, :subtype => [])
end

答案 1 :(得分:0)

您无需附加到列,只需执行此操作:

@request.subtype = params[:subtype].reject { |st| st.blank? }
@request.save

由于sub_type是一个数组,所以您需要这样做。