Как обновить или создать записи с помощью полиморфных - PullRequest
1 голос
/ 03 марта 2020

Я хотел бы обновить или создать массив данных через полиморф c.

class Freelancer < ActiveRecord
  has_one :address, :as => :addressable
end

class Client < ActiveRecord
  has_one :address, :as => :addressable
end

class Address < ActiveRecord
  belongs_to :addressable, :polymorphic => true
  accepts_nested_attributes_for :addressable
end

Я хотел бы использовать этот тип параметров на другом контроллере

class UserController < ApplicationController
  ...
  def new params
    params.require(:user).permit([
      ...
      addresses_attributes: [
        :id, :position, :addressable_type, :addressable_id,
        addressable_attributes: [:id, :first_name, :last_name, :email]
      ]
    ])
  end
end

Данные из внешнего интерфейса:

user: {
  addresses_attributes: [{
   id: 1, position:0, addressable_type: 'Client', addressable_id:12,
   addressable_attributes: {id: 1, first_name: 'Jone', last_name: 'Doe', email: 'jonedoe@gmail.com'}
  },{
   id:'', position:1, addressable_type: 'Freelancer', addressable_id:'',
   addressable_attributes: {id: '', first_name: 'Jone1', last_name: 'Doe1', email: 'jonedoe1@gmail.com'}
  }]
}

Из данных такого рода я хотел бы обновить их, если один из атрибутов в массиве имеет свой идентификатор, и создать их, если это не так. на всех столах.

Как мне справиться с этим?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...