gpt4 book ai didi

ruby-on-rails - RoR 嵌套 :include to include sub-resources in to_xml/to_json

转载 作者:行者123 更新时间:2023-12-02 19:09:08 26 4
gpt4 key购买 nike

我一开始就有一个奇怪的数据模型情况,所以也许我的整个方法是错误的。这就是我正在做的事情:

我有一个名为 Bird 的类和一个名为 Color 的简单类。从概念上讲,每只鸟与颜色都有两种对多关联,一种与雄性颜色相关,一种与雌性颜色相关。我处理这个问题的方法是使用一个名为 BirdColoration 的连接模型,它属于一只鸟和一种颜色,并且有一个额外的 bool 字段来判断颜色是雄性还是雌性。因此,每只鸟实际上与 BirdColoration 都有 to_many 关系,并且与 Color :through BirdColoration 也有 to_many 关系。如果这听起来合理,那么请继续阅读。否则,停下来告诉我为什么错了!

我需要能够将鸟类表转储为 json。以前,当每只鸟只有一个与颜色的 to_many 关联时,我可以使用 :include 将每只鸟的颜色包含在 json 转储中。现在,我将 BirdColorations 包含在转储中,但我仍然需要获取颜色模型本身。我可以分别包含每只鸟的颜色和颜色,然后在解析时将它们匹配,但我宁愿直接包含每种颜色的颜色。类似的东西

      format.json  { render :json => @birds.to_json(:include => [{:bird_colorations => :color}, :seasons, :habitats, :image_holders]) }

但是,上面的方法不起作用。我认为这应该是可能的。谁能指出我如何处理这个问题的正确方向?

现在,我将分别包含每只鸟的颜色和色彩,并在解析时将它们进行匹配。至少我知道这会起作用。

谢谢!

最佳答案

我找到了答案here 。 to_xml 和 to_json 中 :include 选项的语法与 ActiveRecord 的 find 方法的语法不同。要以这种方式包含嵌套资源,请传入哈希而不是数组。对我来说正确的方法调用如下:

      format.json  { render :json => @birds.to_json(:include => {:bird_colorations => {:include => :color}, :seasons => {}, :habitats => {}, :image_holders => {}}) }

与我的问题中的比较,看看有什么不同。对于您不想包含子资源的资源,只需传递一个空哈希作为其符号化名称的值即可。

活到老,学到老!

关于ruby-on-rails - RoR 嵌套 :include to include sub-resources in to_xml/to_json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4443218/

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