0

我有一個API接口,它接受患者的LabTestResult並將其保存在數據庫中。實驗室測試結果的結果列可以是字符串(來自醫生的長文本),整數值或+/-(我將使用布爾值)。數據庫中不同類型的值的繼承

目前我有一個數據庫有三列(text_result,integer_result,sign_result)和每個labtestresult其中之一是字段。

首先,這是正確的做法嗎?還是我需要有三個不同的表,只有結果值是不同的類型?

我也在考慮使用繼承,有一個主模型LabTestResult並有三個子模型TextLabTestResult,IntegerLabTestResult,SignLabtestResult。

所以現在我的問題是當請求來到控制器(API)時,我應該有一個邏輯,如果結果是一個字符串做TextLabTestResult.new或者我應該在父模型LabTestResult中有邏輯,並有一個case語句,如果我們有一個字符串做TextLabTestResult,等等。

我覺得有一個設計模式可以描述這個,我可能完全錯過了一些東西,可能會有更好的設計。

回答

0

在設計任何東西時,總是使用最簡單的選項。如果結果可能是一堆文本,一個數字或一個+或 - ,則將其表示爲文本。

它甚至聽起來像你根本不需要結果表。只需將結果作爲lab_tests表的一部分即可。

rails g model LabTest result:text