0

私のデータは次のようになります。

class Team < ActiveRecord::Base
  has_many :persons
  has_one :leader
end

class Person < ActiveRecord::Base
  belongs_to :team
end

個人は 1 つのチームにしか所属しませんが、多くのチーム メンバーの中でリーダーは 1 人だけです。

最初の質問: Team モデルで has_one の代わりに belongs_to を使用する必要がありますか?

2 番目: チームは、最初にわかっている多くの人物とリーダーで作成されます。これはどのように行うべきですか?

現在、コントローラーで次のようなことを行っています。

  @team = Team.new

  for (each new person as p)

    new_person = @team.persons.build
    new_person.name = p.name

    if p.is_marked_as_leader
      @team.leader = new_person
    end
  end

  @team.save

これは問題です。@team.persons をリストすると、@team.leader が最初の ID を持ちます。@team.save が最初にリーダーの関連付けを保存するためだと思います。提供された順序である必要があります。

ありがとう!

4

1 に答える 1

0

私はリーダーとして「has_one」に投票します。なぜなら、その人はチーム外に存在し、チーム リーダーとしての役割を担うことができるからです。

アグリゲーション vs コンポジションの議論です。

これは議論の余地がある場合もありますが、この場合、チームとリーダーの関係は明らかに構成であると言えます。

于 2010-07-20T16:46:40.987 に答える