我正在構建一個具有一些複雜數據關係的Rail 3.2應用程序。我想知道什麼是構建數據庫的最佳方式。Rail應用程序中的雙向多態關係的缺點是什麼?
我試圖模擬coud的數據與Facebook的元素進行比較。
例如,有一個用戶可以創建項目:
- 評論
- 照片
- 帖子
- 狀態
- 更新
每個項目都可以屬於
- 用戶
- 業務
- 位置
因此,例如, 「用戶A帶着在巴黎麥當勞的照片」。
我想在每個用戶,業務和位置頁面上顯示活動流。
我認爲這樣做的方式涉及雙向多態關係。
一個活動:
class ActivityFeed
belongs_to :feedable, :polymorphic => true
end
class Comment | Photo | Status
has_many :activity_feeds, :as => :feedable
end
和一個所有權
class ActivityOwner
belongs_to :ownable, :polymorphic => true
end
class User | Business | Location
has_many :activity_owners, :as => :ownable
end
然後activity_owner將屬於activity_feed,並activity_feed會有很多activity_owners。
我希望有道理嗎?
這是處理這種情況的好方法嗎?我應該考慮哪些性能問題?有沒有更好的辦法?
後續問題:使用這種方法,是否有可能以多種方式將同一模型映射到多態關係。例如,用戶可以是照片的所有者,並且他們可以是標記的用戶。
我仍然試圖學習Rails,我正在努力解決這個問題。我非常感謝來自他人的意見,經驗和想法,以及任何有用的信息或指南。
謝謝!
謝謝尤里,這是真正有用的知道這些表現數字。我認爲我關心的只是這些表格的大小。例如,每張照片都會在ActivityOwner表(用戶,業務,位置)中有三條記錄。如果有標記的用戶或喜歡,或...這個數字會更大。 ActivityOwner表將很快變大,即使多態關聯表現良好,仍然會有一些開銷。因此,我想知道是否有更好的方法去? –