【发布时间】:2021-10-19 19:09:37
【问题描述】:
我想在 Rails 控制台中显示父实体“Article”的限制集合(4 级),这将是其自身与示例之间的关系:
# article.rb
class Article < ActiveRecord::Base
belongs_to :parent, :class_name => 'Article', optional: true
has_many :sub_articles, :class_name => 'Article', :foreign_key => 'parent_id'
end
def as_json(options={})
super(methods: [:subarticles])
end
其中 as_json (ActiveRecord) 方法被覆盖以显示关系中的递归,例如:
# rails console
Article.first.as_json
=>
id: 1,
name: "king article"
created_at: Fri, 13 Aug 2021 13:14:26.463429000 UTC +00:00,
updated_at: Fri, 13 Aug 2021 13:14:26.463429000 UTC +00:00,
parent_id: nil
sub_articles:
[ Article:0x0000641428defb71
id: 2,
name: "pencils article"
created_at: Fri, 13 Aug 2021 13:14:26.463429000 UTC +00:00,
updated_at: Fri, 13 Aug 2021 13:14:26.463429000 UTC +00:00,
parent_id: 1
sub_articles:
[ Article:0x0000621438defb71
id: 3,
name: "pencil child 1"
created_at: Fri, 13 Aug 2021 13:14:26.463429000 UTC +00:00,
updated_at: Fri, 13 Aug 2021 13:14:26.463429000 UTC +00:00,
parent_id: 2
sub_articles: [],
这可以进一步扩展,但我想将子文章扩展至 4 级......到这样的程度,如果父亲有一个曾曾孙(sub_articles),它就无法显示
【问题讨论】:
标签: ruby-on-rails ruby recursion activerecord rubygems