0

私がやろうとしていることは、次のようなものです。

たとえば、「ユーザー」と「記事」のデータ型があります。私はこれら2つの関係を持ちたいと思っていますが、それは複数の方法です.

たとえば、ユーザーが記事を「いいね」または「ブックマーク」できるようにしたいと考えています。したがって、データベースには 2 つのリレーションが必要です。1 つは記事を気に入っているユーザー用、もう 1 つはユーザーのブックマーク用です。たとえば、「user_article」テーブルを作成するだけでは十分ではありませんね。

これを行う最善の方法は何ですか?

4

2 に答える 2

0

あなたが説明しているのは、「データ型」ではなく「データモデル」です。データ型 = 文字列、整数など。アクティブ レコード オブジェクトの場合は、データ モデルまたはアクティブ レコード モデルです。

Eimantas は、2 つの「has_many」関係について説明しているが、彼の投稿に書かれている「have_many」ではないと指摘しました。彼の例では、ブックマークは結合モデルと呼ばれています。結合モデルに他のものを配置し、そこにある関係を使用して物事を達成できることを覚えておいてください。たとえば、ブックマークの順序やお気に入りのランクを設定したい場合、結合モデルはそのためのアイデア スポットです。

簡素化された例:

class Article < ActiveRecord::Base
  has_many :users, :through => :user_bookmarks
end

class UserBookmark < ActiveRecord::Base
  belongs_to :user
  belongs_to :article
end

class User < ActiveRecord::Base
  has_many :user_bookmarks
  has_many :articles, :through => :user_bookmarks
end

基本を理解した後に確認すること: カウンター キャッシュ - カウントを行っている場合、それらはあなたの味方です。

今すぐポリモーフィズムに飛び込もうとするよりも、これら 2 つの結合モデルを使用する方が、はるかに簡単でクリーンです。それを起動して実行したら、次にそれを探索できます。

于 2010-03-30T16:13:24.473 に答える
0

Bookmarking持っているモデルをお勧めしますbookmarking_type( typeRoR 用に予約されていることに注意してください)。次に、 および がhas_many :bookmarkings可能has_many :liked_articles, :through => :bookmarkingsですhas_many :bookmarks, :through => :bookmarkings。もちろん、条件を追加するか、これらの関連付けに SQL を結合する必要がありますが、すべて問題ありません。そのためのプラグインさえあると思いますが、atmという名前を思い出せません。

于 2010-03-29T19:59:33.867 に答える