我的数据类似于:
class Team < ActiveRecord::Base
has_many :persons
has_one :leader
end
class Person < ActiveRecord::Base
belongs_to :team
end
人员只属于一个团队,但在众多团队成员中只有一个团队成员。
第一个问题:我应该在Team模型中使用belongs_to而不是has_one吗?
第二:团队是由许多人创建的,最初是领导者。该怎么做?
目前我在我的控制器中做了类似的事情:
@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关联。我需要他们按照提供的顺序。
谢谢!
答案 0 :(得分:0)
我会为领导者投票'has_one',因为这个人可以在团队之外存在,也可以作为团队领导。
这是aggregation vs composition讨论。
有时这是有争议的,但在这种情况下,我会说团队领导关系显然是合成。