我正在使用Rails,但它本质上是一个SQL架构问题。
我正在创建一个基本的库存管理数据库。
架构目前是:
Shop
Inventory Pool
Inventory Item
商店与库存池模型有1-Many关系。
库存池与库存物料模型具有1-Many关系。
事情是这样的。创建商店时,会为指定为默认的商店创建关联的库存池。现在,指定只在名称中完成。但就业务逻辑而言,我不希望用户能够删除它。现在要做出这个默认名称,我可以用两种方式之一。
我想我可以在库存池模型中添加一个布尔标志。基本上当我创建初始默认设置时,状态为true。
当我想将其更改为另一个时,我将关联中的默认字段清零,然后将其更改为新字段。
我可以在before_destroy
模型的InventoryPool
方法中添加一项检查,以防止在默认情况下销毁。
这会阻止Shop级联破坏到池,但我想我可以在Shop类的before_destroy回调中添加一个检查,并预先将默认值清零。
我认为这很简单。
另一个选项是在1-Many之上的Shop
和InventoryPool
模型之间添加额外的1-1,这显然是默认值。
我必须处理所有的场景似乎基本上将大多数逻辑都归结为Shop模型而不是InventoryPool。但这没有意义吗?
我认为我错了,但不是默认更多的商店特定背景字段?
无论如何....处理1对多关系的最佳解决方案是什么,其中必须存在一个记录的专属区域。
以下型号代码:
class Shop < ApplicationRecord
has_many :inventory_pools
has_many :inventory_items, :through => :inventory_pools
end
class InventoryPool < ApplicationRecord
belongs_to :shops
has_many :inventory_items
end
class InventoryItem < ApplicationRecord
belongs_to :inventory_pools
end