1

したがって、シリアル化された整数属性を含む次のモデルがあります

レーキファイル:

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>

結果のパラメーターは次の形式になります。 :00-07:00", "endTime"=>"2013-07-31T00:00-07:00", "companyID"=>["1864"]}, "commit"=>"Create"}

そして最後に、作成コントローラーは次のことを行います。

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]

しかし、インデックスに同じ表示が得られます。

何か助けはありますか?

4

1 に答える 1

2

t.integer :companyIDデータベースに があるようです。シリアル化された属性は整数列に入れることはできませんが、代わりにテキスト列が必要です。

于 2013-07-31T19:07:39.367 に答える