我有一個quality_code
字段,它是由用戶輸入的自由文本。但是,某些已知的代碼具有更長的描述。如果已知代碼存儲在記錄中,我希望顯示說明代替代碼。模擬非關聯表的熱切加載
我在模型上有一個簡單的方法來顯示描述(如果可用)或輸入的quality_code(如果沒有),但它落入繪製n個項目列表所需的n + 1個查詢的典型模式:
def view_quality_code
if (code = QualityCode.find_by_quality_code(quality_code)).nil?
quality_code
else
code.description
end
end
如果模型實際上是鏈接(belongs_to :quality_code
),那麼我會排序了這一點通過增加includes(:quality_code)
到查詢,所以它只是做一個額外的查詢到quality_code表。
有沒有一種簡單的方法來做同樣的事情沒有模型被鏈接?
你爲什麼不連接的模式? –
因爲我無法控制quality_code字段中的輸入(我無法拒絕未知值)。我需要在每次輸入一些隨機文本時在質量代碼表中創建存根條目,或者有兩個字段:quality_code_text和quality_code_id – asc99c
如果是我,我可能會鏈接模型並在運行中創建新條目。這可以確保任何輸入*成爲未來用戶的已知代碼 - 是你想要的嗎? –