¿Cómo guardar datos en una relación has_many through desde una API?

Estoy haciendo una API en Ruby on Rails, tengo dos modelos plans y categories los cuales hacen una relación muchos a muchos por lo tanto hago uso de una tabla intermedia con el modelo category_plans, la idea es que se cree un plan el cual tiene varias categorias y cada una de ellas tiene dos atributos más (kind, portion) los cuales se guardan en la tabla intermedia (Estoy usando Postgresql).

Category

class Category < ApplicationRecord     has_many :category_plans     has_many :plan, through: :category_plans end 

Plan

class Plan < ApplicationRecord     has_many :category_plans     has_many :category, through: :category_plans end 

CategoryPlan

class CategoryPlan < ApplicationRecord     validates_presence_of :category, :plan      enum kind: {         Colacion: 'Colacion',         Desayuno: 'Desayuno',         Comida: 'Comida',         Cena: 'Cena'     }, _prefix: :kind      belongs_to :category     belongs_to :plan end 

Las migraciones son las siguientes

Plan

class CreatePlans < ActiveRecord::Migration[5.2]     def change         create_table :plans do |t|             t.string :name             t.references :patient, foreign_key: true             t.text :description             t.datetime :deleted_at             t.timestamps         end     end end 

Category

class CreateCategories < ActiveRecord::Migration[5.2]     def change         create_table :categories do |t|             t.string :name             t.timestamps         end     end end 

CategoryPlan

class CreateCategoryPlans < ActiveRecord::Migration[5.2]     def up         execute <<-SQL             CREATE TYPE type_food AS ENUM ('Colacion', 'Desayuno', 'Comida',              'Cena');         SQL          create_table :category_plans do |t|             t.belongs_to :category, :null => false, :index => true             t.belongs_to :plan, :null => false, :index => true             t.column :kind  , :type_food             t.float :portion         end         add_index :category_plans, :kind     end      def down         drop_column :kind, :type_food         execute "DROP kind type_food;"     end end 

Y el controlador

class V1::PlansController < ApplicationController     before_action :set_patient, only: [:show, :update, :destroy]      def create         plan = Plan.new(plan_params)         if plan.save             render json: {status: 'Success', message: 'Saved plan', data:              plan}, status: 201         else             render json: {status: 'Error', message: 'Plan not saved', data:              plan.errors}, status: :unprocessable_entity         end     end      def plan_params         params.require(:plan).permit(:name, :patient_id, :description,          category_plans_attributes: [:id, :kind, :portion,          category_attributes: [:id]])     end  end 

No estoy seguro que el strong params este correcto y tampoco tengo mucha idea de como armar mi JSON, al momento lo tengo así

JSON

{     "plan": {         "name": "Plan 8",            "patient_id": "3",         "description": "Plan nuevo jeje",         "category_plan": {             "kind": "Cena",             "portion": "12.3"         }     }  } 

Guardar index para reutilizar

Hola buenas mi problema es que necesito imprimir una sublista que va en un tr aparte debajo del tr donde hago el bucle (en el ng-container), pero una vez fuera de ese tr (donde hago el bucle) la i ya no me la reconoce. ¿Alguna idea?. Muchas gracias

<table class="procedures-table__grid">     <caption class="sr-only"><h3>Select next procedure</h3></caption>     <thead class="procedures-table__grid__header">       <tr>         <th id="procedure_procedure" class="">Trámite</th>         <th id="procedure_regulatory-reform" class="">Reforma normativa</th>         <th id="procedure_options" class=""></th>       </tr>     </thead>     <tbody>       <tr [indicator] = i *ngFor="let procedure of tableListProcedures, index as i">         <td headers="procedure-procedure">           <button (click)="openCloseTab(i);" class="">             {{procedure.procedureName}}           </button>           <!-- <i class="adriano-arrow-down" attr.aria-hidden=""></i> -->         </td>         <td headers="procedure_regulatory-reform">           <a (click)="goReformProcedure();" href="#" class="">             {{procedure.regulatory_reform_Procedure}}           </a>         </td>       </tr>       <ng-container *ngIf="i">        </ng-container>     </tbody>   </table