1

2 つのモデルがGroupありPerson、多対多の関係を持ちたいと考えていますが、関係自体を管理する方法がわかりません。グループと人物を個別に作成できるようにしたいと考えています (必ずしもネストされたモデルを使用する必要はありません)。その後、グループ ビュー/モデル自体から人物をグループにリンクします。

その方法について何か提案はありますか?

結合モデルを介して多対多の関係を作成し、モデル内の結合モデルのネストされた属性を受け入れることを考えたので、ビュー/モデルGroupを介して関係を追加および削除できると思います。Groupこのアプローチは理にかなっていますか?

4

2 に答える 2

1

PersonGroup次のようなモデルを作成します。

class PersonGroup < ActiveRecord::Base
  has_many :people
  has_many :groups
end

また、生成された移行ファイルのメソッドにrails generate migration create_person_groupこれを配置することもできます。up

create_table :person_group do |t| 
  t.integer :person_id, :null => false
  t.integer :group_id, :null => false

  t.timestamps
end 

add_index :person_group, [:person_id, :group_id], :unique => true

次にPerson

class Person < ActiveRecord::Base
  has_many :person_groups
  has_many :groups, :through => :person_groups
end

そしてでGroup

class Group < ActiveRecord::Base
  has_many :person_groups
  has_many :people, :through => :person_groups
end
于 2012-09-18T17:24:27.210 に答える
0

ジャンクション テーブルを作成します。ジャンクション テーブルは、多対多のリレーションシップを格納する場合に使用されます。私は ROR での開発を行っていないため、ActiveRecord の詳細についてはわかりませんが、問題について考えるのに役立つと確信しています。

group_id INTEGER,
person_id INTEGER
于 2012-09-18T17:22:11.897 に答える