gpt4 book ai didi

ruby-on-rails - 缩短 respond_with( :include => xxx)

转载 作者:数据小太阳 更新时间:2023-10-29 08:34:10 25 4
gpt4 key购买 nike

我正在寻找一种方法来缩短生成 json 的 respond_with 中的 :include => :child。

这是一个例子,不确定是否可行,但我想知道。

在 Controller 中:

@p = Parent.where('id = ?', params[:id])
respond_with(@p, :include => {:child1 => {}, :child2 => {}, :child3 => {:include => :grandchild1}})

有没有办法在我定义实例时包含所有这些?

也许是这样的:

@p = Parent.includes(:child1, :child2, :child3, :grandchild1).where('id = ?', params[:id])
respond_with(@p)

基本上,我正在尝试整理我的代码......我不想一遍又一遍地输入包含散列......有没有办法在一次调用中包含所有子对象?

最佳答案

ActiveRecord 有一个 as_json 方法,它定义了对象应该如何输出为 json。您可以覆盖此方法以默认包含关联的子项,如下所示:

class Parent < ActiveRecord::Base

# We went to display grandchildren by default in the output JSON
def as_json(options={})
super(options.merge(:include => {:child1 => {}, :child2 => {}, :child3 => {:include => :grandchild1}})
end


end

这应该让你稍微清理一下你的 Controller ,你只需要这个:

@parent = Parent.find(params[:id])
respond_with @parent

关于ruby-on-rails - 缩短 respond_with( :include => xxx),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6950379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com