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