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

それは少し厄介に見えます。それとも、属性に名前を付けますnameか? FirmSize.find(1).name-しかし、それはそれが何であるかを完全には捉えていません。この場合、それは会社の規模です。

「FirmType」や「PriorityLevel」なども同様です。

次に、もう 1 つの懸念は、これらの属性に対して何らかの計算を実行したい場合、次のような奇妙な体操を行う必要があるのではないかということです。

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

後者の場合は、戦略を再考することをお勧めします。
PS 私はあなたが何か間違ったことをしていると言っているのではありません。

于 2012-08-28T10:28:49.880 に答える