所以我有一个有点复杂的数据模型,并试图弄清楚如何对其进行建模。
我有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)
一个User
has_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
这看起来有点尴尬。或者我会命名属性name
?FirmSize.find(1).name
- 但这并没有完全捕捉到它是什么。在这种情况下,它是公司的规模。
这同样适用于“FirmType”和“PriorityLevel”等。
然后另一个问题是,一旦我想对这些属性进行任何计算,我是否必须做一些奇怪的体操,比如:
product = Firm.find(1).firmsize.size * Firm.find(2).firmsize.size
这似乎有点尴尬……或者这是正常的吗?
希望能帮助我澄清我处理这个问题的方式。
谢谢!