[英]What is the best way to model a symmetric relation with ruby on rails?
我正在尋找一種在Rails中建模對稱關系 (如用戶之間的友誼)的優雅方法(盡管這可能更像是一個一般的數據庫問題)。 我知道幾種方法,但似乎都不太優雅:
用用戶的外鍵創建一個user_user關系表。 我不喜歡它,因為它本質上是一個非對稱解決方案。 我看到了一種方法,該方法將具有較低ID的用戶強制進入第一列,而另一用戶強制進入第二列,並使用union從兩端查詢關系。 感覺就像是駭客。
創建一個友誼表,其中每一行代表一個關系,並且:
這種方法的問題在於,它看起來很麻煩,而且也沒有任何東西可以強制2個用戶完全共享友誼。
我希望有比這些更好的解決方案。 有任何想法嗎?
我將創建一個模型Friendship,其中包含可以進行驗證的朋友用戶的外鍵,以確保僅通過執行以下操作即可與同一用戶建立一個朋友關系:
validates :friend_id, :uniqueness => { :scope => :user_id }
我認為這是一個非常優雅的解決方案,具有很大的靈活性。 檢出HAS_ONE:通過在軌協會指導指南活動記錄關聯 ,如果你要像友誼建模。
當然,還有has_and_belongs_to_many關聯。 但是,它提供的靈活性不如創建模型那樣靈活,因此通常不是一個好主意。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.