0

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

class Team < ActiveRecord::Base
  has_many :persons
 belongs_to :leader, :class_name => "Person"
end

class Person < ActiveRecord::Base
  belongs_to :team
end

次のようにチームを作成します。

  @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 が person の前にリーダーの関連付けを保存しているためだと思います。私はそれらが提供されている順序である必要があります.

ありがとう!

4

1 に答える 1

0

IDが特定の順序であることに依存するべきではありません。起こり得ることはたくさんあります。何らかの方法で順序を表すために、別のDB列を割り当てることができます。

ただし、それを実行したい場合は、作成時に人を保存するだけです。これは、IDが割り当てられるときだからです。

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

データベースの一貫性が心配な場合は、forループとを@team.saveトランザクションでラップして、1つが失敗した場合にすべてがロールバックされるようにします。

于 2010-07-20T21:31:54.267 に答える