【问题标题】:Ruby relation between same model同一模型之间的 Ruby 关系
【发布时间】:2012-01-11 12:48:56
【问题描述】:

我在 Rails 中有一个模型,比如说User,我想与另一个用户建立关系。

用户A,可以是用户B的老板,用户B可以是用户C和用户D的老板。

这种关系是一对多的。一个用户可以站在多个用户之上。

我该怎么做呢。
我的用户模型当前有一个名为boss_idID,如果用户处于食物链的顶端,则该名称将为零。

我的活动记录类如下所示:

class User < ActiveRecord::Base

  has_many :users #People beneath the user
  belongs_to :user
end

但现在我想使用带名称的关系。比如说bossfollowers

我怎样才能做到这一点?

【问题讨论】:

    标签: ruby-on-rails ruby activerecord


    【解决方案1】:

    如下所示:

    class User < ActiveRecord::Base
    
        belongs_to :boss, :class_name => 'User'
        has_many :followers, :class_name => 'User', :foreign_key => :boss_id
    
    end
    

    【讨论】:

      【解决方案2】:

      这叫自加入

      自加入

      在设计数据模型时,您有时会发现一个模型应该与自身相关。例如,您可能希望将所有员工存储在单个数据库模型中,但能够跟踪诸如经理和下属之间的关系。这种情况可以用自加入关联建模:

      员工示例:

      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-24
        • 1970-01-01
        • 2012-09-25
        • 1970-01-01
        • 2016-11-30
        • 1970-01-01
        相关资源
        最近更新 更多