Rails在params中序列化了整数属性,但没有保存到模型实例中

时间:2013-07-31 19:02:25

标签: ruby-on-rails serialization attributes integer params

所以我有以下模型,其中包含序列化的整数属性

Rake文件:

class CreateCompanyAssetStats < ActiveRecord::Migration
  def change
    create_table :company_asset_stats do |t|
      t.integer :companyID
      t.string :geo
      t.integer :assetType
      t.date :startTime
      t.date :endTime

      t.timestamps
    end
  end
end

型号:

serialize :companyID, Array
serialize :assetType, Array
serialize :geo, Array

在我看来,我有一个表格,我有一个多选下拉列表,将值存储到参数中:

  <div class="dropdown" data-init="dropdown">
    <button >Multi Select</button>
    <select name="company_asset_stats[companyID][]" multiple>
      <% allFieldValues('company', 'companyname', 'company').each do |value| %>
        <option value=<%= value[1] %>><%= value[0] %></option>
      <% end %>
    </select>
  </div>

生成的参数采用以下形式:   参数:{&#34; utf8&#34; =&gt;&#34;✓&#34;,&#34; authenticity_token&#34; =&gt;&#34; 2WFx3 / 3TyHsjobwRaLJYW2jt4JR5ucvtgyBK3IxKTqs =&#34;,&# 34; company_asset_stats&#34; =&gt; {&#34; startTime&#34; =&gt;&#34; 2013-07-31T00:00-07:00&#34;,&#34; endTime&#34; =&gt; ;&#34; 2013-07-31T00:00-07:00&#34;,&#34; companyID&#34; =&gt; [&#34; 1864&#34;]},&#34;提交&#34 ; =&GT;&#34;创建&#34;}

最后我的创建控制器执行以下操作:

def create
    @company_asset_stats = CompanyAssetStats.new(params[:company_asset_stats])

    if @company_asset_stats.save
      redirect_to :action => "index"
    else
      render 'new'
    end
end

当我被重定向到我的模型索引时,我发现companyID总是保存为0,而assetType根本就没有。我也尝试过以下方式手动设置属性:

@company_asset_stats.companyID = [1,2,3]

但是我在索引中得到了相同的显示。

任何帮助?

1 个答案:

答案 0 :(得分:2)

您的数据库中似乎有t.integer :companyID。序列化属性不能进入整数列,而是需要文本列。

相关问题