Cha*_*zak 19 json ruby-on-rails include has-many-through
我有一个奇怪的数据模型情况,所以也许我的整个方法是错误的.这是我正在做的事情:
我有一个名为Bird的类和一个名为Color的简单类.从概念上讲,每只鸟有两种与颜色相关的关联,一种用于男性颜色,一种用于女性颜色.我处理这个的方法是使用一个名为BirdColoration的连接模型,它属于一个鸟和一个颜色,并有一个额外的布尔字段来判断颜色是针对男性还是女性.因此,每只鸟实际上都与BirdColoration有着很好的关系,而且它通过BirdColoration与Color-toyman相关.如果这听起来合理,那么继续阅读.否则,停下来告诉我为什么这是错的!
我需要能够将鸟桌作为json转储.以前,当每只鸟只有一个与颜色有关联时,我可以使用:include来包含每个鸟的颜色在json转储中.现在,我将BirdColorations包括在转储中,但我仍然需要自己使用颜色模型.我可以单独包括每只鸟的颜色和颜色,然后在解析时匹配它们,但我更愿意直接包括每种颜色的颜色.就像是
      format.json  { render :json => @birds.to_json(:include => [{:bird_colorations => :color}, :seasons, :habitats, :image_holders]) }
但是,上述方法不起作用.我认为这应该是可能的.任何人都可以指出我如何处理这个问题的正确方向?
现在,我将分别包括每只鸟的颜色和颜色,并在解析时匹配它们.至少我知道这会奏效.
谢谢!
Cha*_*zak 51
我在这里找到了答案.to_xml和to_json中的:include选项的语法与ActiveRecord的find方法的语法不同.要以这种方式包含嵌套资源,请传入散列而不是数组.对我来说正确的方法调用如下:
      format.json  { render :json => @birds.to_json(:include => {:bird_colorations => {:include => :color}, :seasons => {}, :habitats => {}, :image_holders => {}}) }
与我的问题中的那个相比,看看差异.对于您不希望包含子资源的资源,只需将空哈希作为其符号名称的值传递.
活到老,学到老!
| 归档时间: | 
 | 
| 查看次数: | 11628 次 | 
| 最近记录: |