Я хотел бы обновить или создать массив данных через полиморф 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'}
}]
}
Из данных такого рода я хотел бы обновить их, если один из атрибутов в массиве имеет свой идентификатор, и создать их, если это не так. на всех столах.
Как мне справиться с этим?