2010-12-14 4 views
0

これは、特定のRailsの質問より多くのアプリケーション設計の質問です。 Gmail内に「ラベル」のようなシステムを実装しようとしています。だから私は、ユーザーが特定の投稿にラベル(または多く)を適用できるようにしたい。しかし、標準のRails CRUDを使ってラベルを管理できるようにしたいと思っています。RailsアプリケーションでGmailのようなラベルを実装する

私はポストと呼ばれるモデルを持っているとしましょう。したがって、ユーザーには多くの投稿があります。ユーザーは投稿とは別のモデルであるラベルを作成できますが、投稿の新規/編集ビューにチェックボックスを使用して投稿に適用することもできます。ユーザーが特定のラベルを削除すると、そのラベルは単に投稿ビューから削除され、他の方法で投稿には影響しません。

この状況では、DB関係の知識が不足していることが示されていますが、これはhas_many_and_belongs_to_many関係の場合ですか?

もしそうなら、次のデザインがこれを実装する方法でしょうか?

  • ユーザーhas_manyの投稿
  • ユーザーhas_manyのは
  • ポストhas_many_and_belongs_to_many ラベル
  • ラベルhas_many_and_belongs_to_many 投稿

たぶん私はこのことを考えて上だと私のロジックが道オフになっているラベル。

答えて

1

タグを人が「所有」する、または人が「使用する」かどうかを決定する必要があります。 Gmailでは、私のラベルは私にとって非常に特有のものです。だから、私がそれらを作ることができるにもかかわらず、タグは私に特有ではありません。

タグをラベルとしたい場合は、はい。

User ---< Label 
Label >--< Post 
User ---< Post 

必要に応じて英語で定義できます。

​​

このCONCEPTUALデータモデルを熟考したことはありません。

+0

これはまさに私が探しているモデルだと思います。ユーザーは、自分が作成したラベルを実際に所有しており、他のユーザーは使用していません。これらは、他のユーザーが他のユーザーのラベルを表示したり検索したりすることができない点で、共通のタグモデルとは異なるようです。この状況で光を放つように感謝します。 – mdunkle

1

あなたの質問から、タクソノミーシステム(タギングモデル)を構築しようとしているようです。あなたの問題の可能な解決策(あるいは興味深いモデリング参照)としてActs As Taggable Onをチェックしたいかもしれません。

0

タグを使ってこの機能を実装できるようです。タギングプラグインのリストとレール用の宝石については、this postをご覧ください。

関連する問題