整数数组被保存为字符串数组

时间:2015-06-05 16:12:57

标签: ruby-on-rails arrays ruby string yaml

我的模板中有这个:

<%= f.hidden_field :user_ids, multiple: true, value: 1 %>
<%= f.hidden_field :user_ids, multiple: true, value: 2 %>

在控制器上我有这个来确保数组是一个整数数组。我测试了它并且工作正常:

before_filter :parse_json_request

  def parse_json_request
    params[:keepcon_settings_users_group][:user_ids] = params[:keepcon_settings_users_group][:user_ids].map(&:to_i) if params[:keepcon_settings_users_group][:user_ids]
  end

问题是数据存储为yaml但是采用以下格式:

---
- '1'
- '2'

我需要这样:

---
- 1
- 2

我的课程是:

class UsersGroup < ActiveRecord::Base
  belongs_to :account_setting
  serialize :user_ids, Array
  attr_accessible :name, :user_ids
  after_initialize :set_defaults

  def set_defaults
    if !self.user_ids or self.user_ids == ''
      self.user_ids = []
    end
  end

end

1 个答案:

答案 0 :(得分:3)

我认为来自HTML表单的传入数据总是以字符串形式发送。您可以通过在每个参数上调用to_i来修复它,如下所示:

user_ids.map!(&:to_i)