Rails一对多关系与一个模型

时间:2017-06-16 15:56:04

标签: sql ruby-on-rails postgresql activerecord

我正在使用Rails,但它本质上是一个SQL架构问题。

我正在创建一个基本的库存管理数据库。

架构目前是:

Shop

Inventory Pool

Inventory Item

商店与库存池模型有1-Many关系。

库存池与库存物料模型具有1-Many关系。

事情是这样的。创建商店时,会为指定为默认的商店创建关联的库存池。现在,指定只在名称中完成。但就业务逻辑而言,我不希望用户能够删除它。

现在要做出这个默认名称,我可以用两种方式之一。

我想我可以在库存池模型中添加一个布尔标志。基本上当我创建初始默认设置时,状态为true。

当我想将其更改为另一个时,我将关联中的默认字段清零,然后将其更改为新字段。

我可以在before_destroy模型的InventoryPool方法中添加一项检查,以防止在默认情况下销毁。

这会阻止Shop级联破坏到池,但我想我可以在Shop类的before_destroy回调中添加一个检查,并预先将默认值清零。

我认为这很简单。

另一个选项是在1-Many之上的ShopInventoryPool模型之间添加额外的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

0 个答案:

没有答案