Rails find_by_sql查找模型的自引用子集

时间:2013-03-28 18:50:59

标签: sql ruby-on-rails activerecord model self-join

我有一个简单的关系:

class Organization < ActiveRecord::Base
  belongs_to :parent_organization, class_name: 'Organization'
end

因此,组织可以与另一个充当其父组织的组织相关联。

我正在寻找一种方法来返回目前充当父母的所有Organization个实例。

基本上,找到所有在Organization#parent_organization_id列中有效引用其ID的组织,这样我就可以设置一个范围:

Organization.parent,它将返回所有充当父母的组织。

谢谢,

1 个答案:

答案 0 :(得分:0)

你应该可以这样做:

Organization.where("id in (?)", Organization.pluck(:parent_organization_id))

然后您可以将其用作范围以简化使用:

scope :parent, where("id in (?)", Organization.pluck(:parent_organization_id))