ruby-on-rails 如何在关联中保存part_id具有且属于多个?

oknrviil  于 2022-11-26  发布在  Ruby
关注(0)|答案(1)|浏览(86)

型号

class Assembly < ApplicationRecord
  belongs_to :book
  has_and_belongs_to_many :parts
end

联接表

class CreateJoinTableAssemblyPart < ActiveRecord::Migration[7.0]
  def change
    create_join_table :assemblies, :parts, id: false do |t|
      t.index [:assembly_id, :part_id]
      t.index [:part_id, :assembly_id]
    end
  end
end

结构描述

create_table "assemblies_parts", id: false, force: :cascade do |t|
  t.integer "assembly_id", null: false
  t.integer "part_id", null: false
  t.integer "assemblies"
  t.integer "parts"
end

主计长
第一个
_Form.html

<div class="form-inputs">
  <%= f.association :book %>
  <%= f.association :parts %>
</div>

这种方式仅保存book_id
我需要保存part_id,但它没有保存,甚至没有给予错误

8xiog9wr

8xiog9wr1#

您需要将正确的参数键和允许的标量值数组(而不是单个值)列入白名单:

def assembly_params
  params.require(:assembly)
        .permit(:book_id, part_ids: [])
end

请检查日志以了解要使用的正确参数关键字。
同时从assemblies_parts表中删除assembliesparts列。您不需要它们,这看起来像是对bug的公开邀请。

相关问题