所有的問候,Single-Table Inheritance是我的Rails問題的正確解決方案嗎?
我正在研究Ruby on Rails中的應用程序,我們需要跟蹤每個用戶的一堆外部服務(例如,Facebook,MySpace,Google,SalesForce,Twitter, WordPress等),該應用程序將代表用戶訪問。對於某些服務,我們需要存儲(加密的)用戶名和密碼,對於某些服務我們需要保存OAuth數據,某些OAuth2數據等等。隨着應用程序的增長,我們需要支持更多類型的帳戶,每個帳戶都有自己的一組驗證數據。
每個用戶都可以在應用程序中創建帖子,我們會將這些帖子發送給外部服務以發佈給用戶。然後,我們跟蹤發佈的帖子(Twitter上的推特,Facebook上的likes/shares等)的回覆。
所以:
class User < ActiveRecord::Base
has_many :services
has_many :posts
end
class Post < ActiveRecord::Base
belongs_to :user
has_many :publishes
end
class Publish < ActiveRecord::Base
has_one :service
belongs_to :post
end
class Service < ActiveRecord::Base
belongs_to :user
belongs_to :publish
end
我使用單表繼承了我的Service
類型(例如,WordpressService
,FacebookService
,TwitterService
,並簡單地序列化一個簡單的散列保存認證數據),並使用之爭一個傳統的,規範化的計劃,其中每種服務都是自己的模型和表格。我希望能夠輕鬆遍歷與用戶關聯的所有服務,並且發佈需要能夠關聯到任何類型的服務(例如,發佈可能發送到WordPress,Facebook或Twitter) 。
使用傳統的標準化方法可以實現這種模型關係嗎?或者這正是STI想要解決的問題?
謝謝。
嗨,斯蒂芬妮,謝謝你的回答 - 但我更多地指的是Rails框架本身的模型關係。我現在回頭澄清了我現在清醒的問題。 :) – 2010-09-23 15:08:03
使用數據庫設計標記它會讓我困惑。 – 2010-09-23 19:56:56