我們有一個使用2種模型的rails應用程序:圖像和視頻。 它們都屬於收藏實體。 如果我們想要以統一的方式查詢或使用這兩種類型 - 我們不能。所以如果我們想取得最後15個,我們會查詢兩次,然後再排序,然後再取15個。 如果我們想找到()一些ID,我們需要總是得到它是什麼類型 - 視頻或圖像...設計多態類
所以我們正在考慮如何解決這個問題。 持有指向任一個的資產模型? 它能夠被急切加載嗎?
在我看來,它必須是Asset.find(_id),並且我將無法識別圖像或視頻。
在Rails中解決這個問題的最簡單或最正確的方法是什麼?
謝謝!
我認爲在軌道'enum'是你正在尋找。 http://api.rubyonrails.org/v5.1/classes/ActiveRecord/Enum.html。希望這個幫助。 – thanhnha1103
沒有正確的方法來解決這個問題,因爲它是[Object-relational impedance mismatch](https://en.wikipedia.org/wiki/Object-relational_impedance_mismatch)的一個例子。解決這個問題的常用方法是使用單表或多表繼承。 – max
使用Tamer所描述的STI將允許您執行MediaItem.find(id)並根據結果獲取視頻或圖像模型 – s1mpl3