【发布时间】:2011-05-25 12:00:20
【问题描述】:
我有一个奇怪的数据模型情况,所以也许我的整个方法都是错误的。这就是我正在做的事情:
我有一个名为 Bird 的类和一个名为 Color 的简单类。从概念上讲,每只鸟都有两种与颜色的关联,一种是雄性颜色,一种是雌性颜色。我处理这个问题的方法是使用一个名为 BirdColoration 的连接模型,它属于鸟和颜色,并且有一个额外的布尔字段来判断颜色是男性还是女性。所以每只鸟实际上都有一个 to_many 到 BirdColoration 的关系,以及一个 to_many 到 Color :through BirdColoration 的关系。如果这听起来合理,请继续阅读。否则,停下来告诉我为什么不对!
我需要能够将鸟表转储为 json。以前,当每只鸟只有一个 to_many 与颜色的关联时,我可以使用 :include 将每只鸟的颜色包含在 json 转储中。现在,我将 BirdColorations 包含在转储中,但我仍然需要获取颜色模型本身。我可以分别包含每只鸟的颜色和颜色,然后在解析时匹配它们,但我更愿意直接包含每种颜色的颜色。像
format.json { render :json => @birds.to_json(:include => [{:bird_colorations => :color}, :seasons, :habitats, :image_holders]) }
但是,上述方法不起作用。我认为这应该是可能的。谁能指出我如何处理这个问题的正确方向?
现在,我将分别包含每只鸟的颜色和颜色,并在解析时将它们匹配起来。至少我知道这会奏效。
谢谢!
【问题讨论】:
标签: ruby-on-rails json include has-many-through