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 将领导者关联保存在人员之前。我需要它们按照提供的顺序排列,其中 :leader belongs_to 引用了我的 has_many :persons 中的 ID 之一

谢谢!

4

1 回答 1

0

您不应该依赖 ID 的任何特定顺序,有很多事情可能发生。您可以分配另一个 DB 列以某种方式表示排序。

但是,如果您想这样做,只需在创建人员时保存他们,因为那是分配 ID 的时间:

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

如果您担心数据库的一致性,请将for循环和@team.savein 包装在一个事务中,这样如果一个失败,它们都会回滚。

于 2010-07-20T21:31:54.267 回答