【发布时间】:2023-04-08 12:37:02
【问题描述】:
我的应用中有一个层次结构:
- 环境有容器
- 容器有物品
- 项目有表情
所以我的模型代码如下所示:
class Environment < ActiveRecord::Base
has_many :containers, :dependent => :destroy
def as_json(options = {})
super(options.merge(include: :containers))
end
end
class Container < ActiveRecord::Base
has_many :items, :dependent => :destroy
belongs_to :environment
def as_json(options = {})
super(options.merge(include: :items))
end
end
class Item < ActiveRecord::Base
has_many :expressions, :dependent => :destroy
belongs_to :container
def as_json(options = {})
super(options.merge(include: :expressions))
end
end
class Expression < ActiveRecord::Base
belongs_to :item
def as_json(options = {})
super()
end
end
在定期获取记录我通常只需要低于所需记录的一个层次结构,这就是为什么在as_json 中我只向下合并一个层次结构(获取环境将返回一组容器但那些容器不会有物品)
我的问题:
现在我需要向控制器添加一个方法,以允许完整的层次结构响应,即GET /environment/getFullHierarchy/3 将返回:id=3 的环境及其所有容器和每个容器all it's Items & for each Item all it's expressions. 不破坏当前的 as_json
我对 Rails 有点陌生,正在使用 Rails 4.2.6 并且不知道从哪里开始 - 谁能帮忙?
【问题讨论】:
-
谢谢@sethi,你能解释一下我如何使用这个宝石吗?文档不够清楚,你能在我的例子中展示一下吗?
标签: ruby-on-rails json ruby-on-rails-4