我在rails中有一个模型,比方说User
,我希望与另一个用户有关系。
用户A,可以是用户B的老板,用户B可以是用户C和D的老板。
这种关系是一对多的。一个用户可以站在多个用户之上。
我该怎么做。
我的用户模型目前有ID
,其名称为boss_id
,如果用户位于食物链的顶端,则该值为零。
我的活动记录类如下所示:
class User < ActiveRecord::Base
has_many :users #People beneath the user
belongs_to :user
end
但现在我想使用与名称的关系。让我们说boss
和followers
。
我怎样才能做到这一点?
答案 0 :(得分:6)
以下是它的样子:
class User < ActiveRecord::Base
belongs_to :boss, :class_name => 'User'
has_many :followers, :class_name => 'User', :foreign_key => :boss_id
end
答案 1 :(得分:1)
它被称为自我加入
在设计数据模型时,您有时会找到一个与自身有关系的模型。例如,您可能希望将所有员工存储在单个数据库模型中,但能够跟踪经理和下属之间的关系。这种情况可以通过自联合协会建模:
员工示例:
class Employee < ActiveRecord::Base
has_many :subordinates, :class_name => "Employee"
belongs_to :manager, :class_name => "Employee", :foreign_key => "manager_id"
end
通过此设置,您可以检索 @ employee.subordinates 和 @ employee.manager 。