rails活动模型从同一个表查询父子
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rails活动模型从同一个表查询父子相关的知识,希望对你有一定的参考价值。
我有以下数据库架构
id parent child
1 0 No parent1
2 0 No parent2
3 1 Has parent 1
4 1 Has parent 1
5 2 Has parent 2
考虑上面的表作为我的表模式,现在我如何查询它或使用它来显示这样的东西
No parent1
* Has parent 1
* Has parent 1
No parent2
* Has parent 2
这是我目前的控制员
@locations = Location.all.order(parent: :asc)
任何人都可以给我一个建议我怎么能这样做
答案
你总是可以使用group_by。此外,这里是related question的链接。
另一答案
您正在实施父子关系。请看这个question。
模型应该是这样的
class Location < ActiveRecord::Base
has_many :childrens, :class_name => "Location"
belongs_to :parent, :class_name => "Location"
end
在您的位置表中添加parent_id
和child_id
字段。
然后打电话给@locations = Location.parents
@locations.each{|location|
location.name
Childrens:
location.childrens.each{|child|
child.name
}
}
另一答案
我解释如下:
模型/ location.rb
has_many :childrens, class_name: 'Location', foreign_key: :parent
belongs_to :parent, class_name: 'Location', foreign_key: :id
def self.order_by_parent(top: nil)
locations = Location.where(parent: top)
locations_return = []
locations.each do |location|
locations_return << location
auxs = Location.order_by_parent(top: location.id)
auxs.each do |aux|
locations_return << aux
end
end
locations_return
end
locations_controller.rb
def index
@locations = Location.order_by_parent(top: nil)
end
以上是关于rails活动模型从同一个表查询父子的主要内容,如果未能解决你的问题,请参考以下文章