1

私はまだジュニアプログラマーなので、ベストプラクティスのアイデアを得ようとしています. 4 つの通知ストリーム [メッセージ、イベント、コメント、ロケーション ベース] がある場合、イベントの種類ごとに個別のテーブルを作成するか、1 つのテーブルを作成してイベントの種類を説明する列を追加する必要があります。

(中程度のトラフィック、レール、AR、Postgre、および各テーブルがかなり類似した列 [id、user_id、other_object_id、message、time、...] を持っていると仮定します)

アドバイスありがとう!

4

1 に答える 1

3

それはおそらくソフトウェア設計の問題です。すべての種類の通知に共通の動作がありますか? 答えが「いいえ」の場合は、通知の種類ごとに異なるモデルを作成してください。

ただし、ほとんどの場合、同じ動作であっても、通知に対してかなりの共有動作があります。通知がすべて同じように見え、互いにわずかな違いがある場合は、notification_type列を追加し、その列の値に基づいて小さな動作を定義します。これは、より迅速で実用的な方法です。

優れたデザイン パターンを実装する場合は、通知モデルで共通の動作を定義する ActiveRecord 継承を実装すると、メッセージ、イベント、コメントなどがこのモデルから継承されます。

Active Record の継承の詳細については、Rails のドキュメント ( http://api.rubyonrails.org/classes/ActiveRecord/Base.html)、Martin Fowler パターンhttp://www.martinfowler.com/eaaCatalog/singleTableInheritanceを参照してください。 .htmlを使用すると、ウェブ全体でさまざまな例を見つけることができます

于 2012-12-10T08:50:58.923 に答える