我有一个模型person
和一个模型group
。有两种人:领导者领导小组和参与者参与。我需要领导者和团体之间的hbtm关系以及参与者和团体之间的关系。通过在模型中提供某种条件(是领导者/是参与者),是否可以使用相同的模型person
执行此操作?
class Person < ActiveRecord::Base
has_and_belongs_to_many :groups
has_many :participations
has_many :groups, :through => :participations
...
end
我想用一个模型person
执行此操作,因为用户是领导者或参与者,但每个用户都应该是一个人,即User belongs_to :person
。
答案 0 :(得分:0)
你应该只为一个人而不是更多。你可以这样做:
class Person < ActiveRecord::Base
has_many :relations
has_many :groups, :through => :relations
...
end
class Group < ActiveRecord::Base
has_many :relations
has_many :persons, :through => :relations
...
end
class Relation < ActiveRecord::Base
belongs_to :person
belongs_to :group
end
表&#39>表&#39;关系&#39;应该在person_id和group_id旁边,还有一个字段,例如&#39; leader&#39;值应为true / false或1/0。因此,如果该组的人是领导者,则该值应为1 / true,否则为0 / false