У меня есть три модели Пополнение запасов , Продукт и Размер
#Product
has_many :sizes, as: :sizeable
#Size
belongs_to :sizeable, polymorphic: true
restocking.rb
class Restocking < ApplicationRecord
has_many :sizes, as: :sizeable
belongs_to :product
accepts_nested_attributes_for :sizes
def update_existing_product
product = self.product
product.update_attributes(
price: self.price,
buying_price: self.buying_price,
)
sizes = Size.where(sizeable_id: self.product_id)
self.sizes.each do |restocking_size|
sizes.each do |product_size|
if product_size.size_name == restocking_size.size_name
product_size.quantity += restocking_size.quantity
product_size.save
end
end
end
end
end
Таким образом, метод update_existing_product
обновляет цены и количество существующих размеров ...
Если найден аналогичный size_name
, он обновляет существующее количество размеров, в противном случае он создает новый ... Я неНе удается правильно создать новые размеры ...
Я должен использовать этот метод Size.create
, но когда я помещаю его в цикл, он создает один и тот же размер много раз.
Size.create!(
sizeable_id: self.product_id,
sizeable_type: "Product",
size_name: restocking_size.size_name,
quantity: restocking_size.quantity,
)