5

エンティティ モデルがあり、エンティティ間の接続を表示したいと考えています。つまり、エンティティ 1 はエンティティ 2 に接続されます。

私が今考えているのは、Connection と呼ばれる 2 つの結合モデルを作成し、従来の Rails 結合テーブルのように機能させることです。列が entity_one_id と entity_two_id であることを除いて、Entity と Connection の間に多対多の関係を確立します。

これは、これを行うための本当にエレガントではない方法のようです。誰かがもっと良いアイデアを持っているかどうか疑問に思っていましたか?たぶん、私が見ていないもっとレール風の何かでしょうか?

4

2 に答える 2

8

これが最も一般的な方法です。エンティティが他の 1 つのモデルにしか接続されていない場合は、リンク リストのツリーのような構造を使用できます。

自己結合モデルに関する Ryan Bates の Railscast を確認してください。ソーシャル ネットワークのようなシステムを扱っていますが、それでも必要な原則があり、優れた出発点を提供します。

于 2011-01-18T18:03:34.933 に答える
1

この実装を使用できます:

class User < ActiveRecord::Base
  has_many :friends, :through => :friendships, :conditions => "status = 'accepted'"
  has_many :requested_friends, :through => :friendships, :source => :friend, :conditions => "status = 'requested'", :order => :created_at
  has_many :pending_friends, :through => :friendships, :source => :friend, :conditions => "status = 'pending'", :order => :created_at
  has_many :friendships, :dependent => :destroy
end


class Friendship < ActiveRecord::Base
   belongs_to :user
   belongs_to :friend, :class_name => "User"
end
于 2011-01-18T18:05:16.303 に答える