我有一個帶有“類別”“玩家”和“比賽”的應用程式。
我想創建一個新表:“建議”,引數:
name: string,
description: text,
type: integer,
element_id: integer
用戶將能夠為球員、類別或比賽創建“建議”。type:integer 將指示這是什么型別的建議
"Category Suggestion" -> 1
"Player Suggestion" -> 2
"Match Suggestion" -> 3
我的問題是,如何僅使用一個外鍵(element_id)參考多個表?此外鍵可以來自“類別”、“玩家”或“匹配”,具體取決于建議的“型別”。
我在模型中考慮了一個解決方案,我只是將外鍵放在那里,但我不確定這是否會導致我的應用程式出現問題。我還考慮過創建 3 個表 CategorySuggestions、PlayersSuggestions 和 MatchesSuggestions,但這太過分了,我不太喜歡這樣。
uj5u.com熱心網友回復:
您正在尋找的是Polymorphic Associations。你可以添加類似的東西,
class Suggestion
...
belongs_to :suggestable, polymorphic: true
...
end
在資料庫中,您將向表中添加兩列suggestions。
t.bigint :suggestable_id
t.string :suggestable_type
然后您可以簡單地使用suggestion.suggestablewhich 將為您提供正確型別的相應物件,而無需自己管理任何型別或整數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/416220.html
標籤:
