Массив не сохраняется от одной модели к другой в рельсах - PullRequest
0 голосов
/ 01 декабря 2018

Я пытаюсь сохранить массив из нескольких идентификаторов (item_variation_ids) в модель items_stock из модели вариаций элементов.В столбце item_variation_ids в item_stock он сохраняет идентификаторы, такие как [1,2,3], дважды.Я хочу, чтобы item_variation_ids был сохранен только один раз с 1,2,3 в одном столбце.Моя модель товара

#app/models/item_variation
class ItemVariation < ApplicationRecord
  belongs_to :item
  validates_associated :item
  after_save :add_to_item_stock

 def add_to_item_stock
   ItemStock.create(item_variation_ids: ItemVariation.ids, items_id: items_id)
 end
end

Моя модель товара

 #app/models/item
 class Item < ApplicationRecord
  has_many :item_variations, foreign_key: :items_id
  has_many :item_stocks, foreign_key: :items_id
  accepts_nested_attributes_for :item_stocks
end

Моя модель товара

#app/models/item_stock
class ItemStock < ApplicationRecord
  belongs_to :item
end

1 Ответ

0 голосов
/ 03 декабря 2018

Но как вы узнаете, какие идентификаторы ItemVariation должны идти на этом ItemStock?и вы создаете один ItemStock каждый раз, когда сохраняется любой вариант.Я даже не думаю, что вам нужно устанавливать этот массив ids, так как ItemStock уже принадлежит Item, у которого есть много вариантов (@ item_stock.item.variations, и все готово).

Также теперь вы говорите оstock_qty атрибут, который вы никогда не упоминали ранее, вы никогда не устанавливали его в обратном вызове и не показывали схему своей базы данных.откуда это происходит?является атрибутом варианта, который вы хотите суммировать с текущим item_stock?

Я также не понимаю, почему у элемента есть много запасов для кода, который вы показываете.

I 'Я сделаю дикое предположение и предложу вам сделать что-то вроде:

ItemStock
  belongs_to :item
  belongs_to :item_variation
end

ItemVariation
  after_save :add_to_item_stock

  def add_to_item_stock
    item_stock = self.item.item_stock.where(item_variation_id: self.id).first_or_initialize
    item_stock.stock_qty = self.stock_qty
    item_stock.save
  end
end

, но, как я уже сказал, это довольно сложное предположение.Я бы порекомендовал вам сначала попытаться понять, что вы делаете, потому что кажется, что вы просто скопировали код из того вопроса, который вы связали, и на самом деле вы его не понимаете.

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