0

所以我有一个有点复杂的数据模型,并试图弄清楚如何对其进行建模。

我有Client。那Client属于一个Firm

Firm具有以下属性:

 - Firm Size (0.2, 0.4, 0.6, etc.)
 - Firm Type (Big, Small, Medium)
 - Priority Level (1, 2, 3, 4, 5 - from low to high)

一个Userhas_many Clients

该用户需要能够编辑每个公司的属性:

例如添加一个新的大小Firm Size(比如 0.95)。

所以我想有一个Firm模型。然后还分别为每个属性建立一个模型。这样用户就可以将新记录添加到公司规模等。

我有点困惑的是命名,Firm考虑到foreign_ids和所有的东西,这不会让每个条目看起来有点奇怪吗?我将如何操作数据?

例如,对于一家公司,记录可能如下所示:

:name => "Firm A", :firm_size_id => 1, :firm_type_id => 2, :priority_level_id => 1

然后,当我想找到一家公司的规模时,我必须运行这样的查询:

Firm.find(1).firm_size.size

对于 FirmSize,我将属性命名为什么:“大小”?如果我这样做,那么我会像上面这样进行 Rails 调用?:

FirmSize.find(1).size

这看起来有点尴尬。或者我会命名属性nameFirmSize.find(1).name- 但这并没有完全捕捉到它是什么。在这种情况下,它是公司的规模。

这同样适用于“FirmType”和“PriorityLevel”等。

然后另一个问题是,一旦我想对这些属性进行任何计算,我是否必须做一些奇怪的体操,比如:

product = Firm.find(1).firmsize.size * Firm.find(2).firmsize.size

这似乎有点尴尬……或者这是正常的吗?

希望能帮助我澄清我处理这个问题的方式。

谢谢!

4

1 回答 1

0

为什么要为公司的规模、类型和优先级创建单独的模型?
您应该尝试了解为任何信息提供属性/单独模型的目的。

在查看您的问题时,我想到了 XML 子元素和属性的类似概念。虽然它是题外话,但我相信这应该让你更清楚地了解整个事情:

回到这个问题,我会说你继续制作Firm模型和size, type etc.属性。把它付诸实施,然后再回头看看你的问题。

我这么说的主要原因是我看不到FirmType, FirmSize & FirmPriorityLevel having more than a fixed set of values&
您的业务逻辑不会在很大程度上以 Firmtype 或 FirmSize 为中心。

如果是后者,我会说重新考虑你的策略。
PS我不是说你做错了什么,只要确保你以最好的方式做。

于 2012-08-28T10:28:49.880 回答