如何处理在Rails3上使用ActiveRecord引用相同主表的2列

时间:2012-01-26 05:40:43

标签: ruby-on-rails activerecord

当一个表有2列时,在Rails3上使用ActiveRecord引用相同的主表

有如下表格。

Depts  
  id 
  dept_name 

Users 
  id 
  dept_id 
  previous_dept_id 

用户表有两列引用Depts表 如何为每列获取dept_name?

class Dept < ActiveRecord::Base 
  has_many :user 
end 

class User < ActiveRecord::Base 
  belongs_to :dept 
end 

1 个答案:

答案 0 :(得分:2)

我认为您正在寻找的是以下内容:

class User < ActiveRecord::Base 
  belongs_to :dept 
  belongs_to :previous_dept, :class_name => 'Dept', :foreign_key => 'previous_dept_id'
end

然后您应该可以访问这两个部门:

dept_name = user.dept.dept_name
previous_dept_name = user.previous_dept.dept_name

请务必注意,您的Dept模型只会在dept_id列中找到用户。如果您需要按照之前的部门查找用户,我认为您必须向has_many添加第二个Dept。类似的东西:

class Dept < ActiveRecord::Base 
  has_many :user 
  has_many :previous_user, :class_name => 'User', :foreign_key => 'previous_dept_id'
end