Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 数据库模式&;铁路协会_Ruby On Rails_Ruby_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 数据库模式&;铁路协会

Ruby on rails 数据库模式&;铁路协会,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,所以我有一个有点复杂的数据模型,我正试图找出如何建模 我有客户端。该客户属于公司 公司将具有如下属性: - 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) 一个用户有许多客户端 该用户需要能够编辑每个公司的属性: 例如,将新尺寸添加到固定尺寸中(例如0.95) 所以我想建立一个公司模式。然后分别为每个属性

所以我有一个有点复杂的数据模型,我正试图找出如何建模

我有
客户端
。该
客户
属于
公司

公司
将具有如下属性:

 - 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)
一个
用户
有许多
客户端

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

例如,将新尺寸添加到
固定尺寸中
(例如0.95)

所以我想建立一个
公司
模式。然后分别为每个属性创建一个模型。这样,用户就可以在公司规模等方面添加新记录

我有点困惑的是命名问题,考虑到外国ID和其他因素,这会不会让每个
公司的条目看起来有点奇怪?我将如何操作数据

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

:name => "Firm A", :firm_size_id => 1, :firm_type_id => 2, :priority_level_id => 1
Firm.find(1).firm_size.size
然后,当我想找到一家公司的规模时,我必须运行如下查询:

:name => "Firm A", :firm_size_id => 1, :firm_type_id => 2, :priority_level_id => 1
Firm.find(1).firm_size.size
对于FirmSize,我会如何命名属性:“size”?如果我这样做,那么我会做一个Rails调用,就像上面的一样

FirmSize.find(1).size

那看起来有点尴尬。或者我会将属性命名为
名称
FirmSize.find(1.name)
——但这并不能完全捕获它是什么。在这种情况下,这是公司的规模

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

另一个问题是,一旦我想对这些属性进行任何计算,我不需要做一些奇怪的体操吗,比如:

product = Firm.find(1).firmsize.size * Firm.find(2).firmsize.size
这看起来有点尴尬…还是正常

我很想知道我是如何处理这件事的


谢谢

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

在看您的问题时,我想到了XML子元素和属性的类似概念。虽然这是离题的,但我相信这会让你更清楚地了解整件事:

回到问题上来,我想说你继续把
公司
作为模型,把
大小、类型等作为属性。将此应用于实现,然后再次回顾您的问题

我这么说的主要原因是,我没有看到
FirmType、FirmSize和FirmPriorityLevel具有超过一组固定值的值
您的业务逻辑不会在很大程度上以Firmtype或FirmSize为中心

如果是后者,我会说重新考虑你的策略。

另外,我不是说你做错了什么,只是要确保你用最好的方式来做。

我同意你的看法,re:确保我用最好的方式来做。这就是为什么我在这里问这个…为了更清楚。我必须将它们分开的原因是因为FirmSize、FirmType和FirmPriorityLevel不是固定值。用户应该能够轻松创建新的“大小”,以及新的类型和优先级。此外,应该有一种方法来获得两个值。i、 e.FirmSize可以是“大”,但“值”为0.6,而“小”为0.2。但当用户在前端进行选择时,他们只选择“大”或“小”。这同样适用于其他属性。想法?你所描述的情景是典型的。是什么让你烦恼。忘记所有这些关于不同尺寸、类型和用户制造它们的大惊小怪吧。按照我建议的方式编写代码吧。基于您提供的上下文,我相信我所说的是正确的。不过,如果有什么事情困扰着你,请提一个场景,我们可以讨论一下。不过你没有回答我的问题。如果我存储的只是公司模型上的一个“大小”属性……我如何处理这些额外的需求?哦,而且业务逻辑在很大程度上是以FirmType&FirmSize为中心的。我正在建立一个评级系统,其中这些因素是应用程序的核心。基本上,这些公司将根据应用程序根据分配给每个公司的值计算的分数进行排名。因此,这不是一个简单的如-公司地址、公司规模=20等的应用程序。这是其中一个应用程序,其中的每一项都是应用程序功能的核心…如果这有任何意义的话。否则,我会像你说的那样做——但我看到了缺陷,因此我提出了问题:)