Ruby on rails Rails,通过窗体传递数组

Ruby on rails Rails,通过窗体传递数组,ruby-on-rails,forms,Ruby On Rails,Forms,我尝试使用复选框标记在rails表单中推送数组属性,如下所示: = check_box_tag 'order[supplementals_ids][]', supplemental.id params.require(:order).permit(:meal_id, supplementals_ids: []) 提交表单时一切正常。在创建订单之前,我正在使用调试器检查推送的参数。params[:order]的输出为 {"supplementals_ids"=>["2", "3"], "

我尝试使用复选框标记在rails表单中推送数组属性,如下所示:

= check_box_tag 'order[supplementals_ids][]', supplemental.id
params.require(:order).permit(:meal_id, supplementals_ids: [])
提交表单时一切正常。在创建订单之前,我正在使用调试器检查推送的参数。params[:order]的输出为

{"supplementals_ids"=>["2", "3"], "meal_id"=>"4"}
看起来不错。但是,在创建订单之后,我得到了以下结果

supplementals_ids: nil
知道问题出在哪里吗?orders控制器中允许的参数如下所示:

= check_box_tag 'order[supplementals_ids][]', supplemental.id
params.require(:order).permit(:meal_id, supplementals_ids: [])
我怀疑问题在于,在我的模式中,补充ID的期望值是一个整数

  create_table "orders", force: :cascade do |t|
    t.integer  "meal_id"
    t.datetime "created_at",        null: false
    t.datetime "updated_at",        null: false
    t.integer  "supplementals_ids"
  end
但是,在序列化模型中的属性时,我得到

属性本应为数组,但为Fixnum。-0


谢谢你的建议

使用迁移更改数据库中的列类型

class ChangeColumnSupplementalsIdsInOrder < ActiveRecord::Migration
  def up
    change_column : supplementals_ids, :text
  end

  def down
    change_column : supplementals_ids, :integer
  end
end

注意:值数组不能保存在
整型
补充ID

使用迁移更改数据库中的列类型

class ChangeColumnSupplementalsIdsInOrder < ActiveRecord::Migration
  def up
    change_column : supplementals_ids, :text
  end

  def down
    change_column : supplementals_ids, :integer
  end
end

注意:值数组无法保存在
integer
supplementals\u id

您是否试图将数组保存在
supplementals\u id
中?是的,是否可能有[“2”,“3”]在其中?这真的很糟糕。最好的方法是在
顺序中关联
有许多:增补
,这样你就可以保存这些增补并按
顺序获取。增补
。(您可以在订单和补充之间使用联接模型)。请检查我的答案,它将对您有效:)您是否尝试在
补充ID
中保存数组?是的,是否可能在其中包含[“2”,“3”]?这真的很糟糕。最好的方法是在
顺序中关联
有许多:增补
,这样你就可以保存这些增补并按
顺序获取。增补
。(您可以在订单和副刊之间使用联接模型)。请检查我的答案,它适用于您:)