【发布时间】:2018-12-01 11:21:38
【问题描述】:
我正在尝试将一个包含多个 ID (item_variation_ids) 的数组保存到来自项目变化模型的名为 items_stock 的模型中。在 item_stock 中名为 item_variation_ids 的列中,它将像 [1,2,3] 这样的 id 保存两次。我希望 item_variation_ids 在单列中仅保存一次 1,2,3。 我的 item_variation 模型
#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
我的 item_stock 模型
#app/models/item_stock
class ItemStock < ApplicationRecord
belongs_to :item
end
【问题讨论】:
-
每当您保存任何 ItemVariation 时,您都会创建一个具有所有 ItemVariation id 的 ItemStock。另外,ItemStock 是什么样的?展示你的 3 个模型,
items_id来自哪里?你的意思是item_id?您应该更好地解释您的问题并分享所有相关代码。一个问题之前和之后你在数据库上的例子会更好。 -
我已经添加了另外两个模型请检查
-
我不确定 ItemStock 里面有什么。您正在尝试保存
item_variations_ids和items_id,但我只看到item_id的关联。你能解释一个现实生活中的例子吗?每个模型是什么?我猜你使用了错误的关联,但我不确定。 -
@arieljuod 真实例子也在这里stackoverflow.com/questions/53350010/…
-
嗯,这不是一个真实的例子,这就像你的问题,但有一个 activeadmin 配置和一张图片。你真的应该回答任何人在评论中提出的所有问题。
items_id在 after_save 回调中来自哪里,您是否知道 ItemVariation.ids 返回数据库上的所有 id 并且您每次都尝试创建一个具有所有 id 的 ItemStock?我仍然不明白你在做什么,我不明白 ItemStock 的使用,因为它只有一个 belongs_to 项目,不知道你的数据库模式对那个 item_variations_ids 有意义(为什么不是 has_many?)
标签: ruby-on-rails ruby-on-rails-4 ruby-on-rails-5 rails-activerecord