ご挨拶、すべて、
私はRubyonRailsでアプリケーションに取り組んでおり、アプリがアクセスする各ユーザー(Facebook、MySpace、Google、SalesForce、Twitter、WordPressなど)の一連の外部サービスを追跡する必要があります。ユーザーに代わって。一部のサービスでは、(暗号化された)ユーザー名とパスワードを保存する必要があります。一部のサービスでは、OAuthデータ、一部のOAuth2データなどを保存する必要があります。アプリが成長するにつれて、それぞれが独自の認証データのセットを持つ、さらに多くの種類のアカウントをサポートする必要があります。
各ユーザーはアプリケーション内で投稿を作成できます。これらの投稿を取得して外部サービスに送信し、ユーザーに公開します。次に、公開された投稿への応答を追跡します(Twitterでのリツイート、Facebookでのいいね/共有など)。
それで:
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
について議論しています。ユーザーに関連付けられているすべてのサービスを簡単に繰り返すことができるようにしたいのですが、公開は任意のタイプのサービスに関連付けることができる必要があります(たとえば、公開はWordPress、Facebook、Twitterに送信される場合があります)。 。FacebookService
TwitterService
従来の正規化されたアプローチを使用して、そのようなモデル関係を実現できますか?それとも、これはまさにSTIが解決することを意図したものですか?
ありがとう。