RoR nested: include для включения подресурсов в to_xml / to_json

У меня для начала странная ситуация с моделью данных, так что, возможно, весь мой подход неверен. Вот что я делаю:

У меня есть класс Bird и простой класс Color. Концептуально у каждой птицы есть две ассоциации to_many с Color, один для мужских окрасов и один для женских окрасов. Я справился с этим путем использования объединенной модели BirdColuration, которая принадлежит птице и цвету и имеет дополнительное логическое поле, чтобы определить, является ли окраска мужской или женской. Таким образом, каждая птица фактически имеет отношение to_many к BirdColuration, а также отношение to_many к Color: через BirdColuration. Если это звучит разумно, продолжайте читать. В противном случае остановитесь и скажите мне, почему это неправильно!

Мне нужно иметь возможность выгружать таблицу birds как json. Раньше, когда у каждой птицы была только одна ассоциация to_many с цветами, я мог просто использовать: include, чтобы включить цвета каждой птицы в json-дамп. Сейчас я включаю BirdColorations в дамп, но мне все еще нужно добраться до самих цветовых моделей. Я мог бы отдельно включить каждую птицу » s цвета и окраски, а затем сопоставить их во время синтаксического анализа, но я бы предпочел просто включить цвет каждого цвета напрямую. Что-то вроде

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

Однако вышеперечисленное не работает. Я думаю, что это должно быть возможно. Может ли кто-нибудь указать мне в правильном направлении, как с этим справиться?

Сейчас я просто включу цвет и окраску каждой птицы отдельно и сопоставлю их при синтаксическом анализе. По крайней мере, я знаю, что это сработает.

Спасибо!

19
задан CharlieMezak 14 December 2010 в 19:19
поделиться