У меня возникла странная ситуация с моделью данных, поэтому, возможно, весь мой подход ошибочен. Вот что я делаю:
У меня есть класс под названием Bird и простой класс Color. Понятно, что у каждой птицы есть две ассоциации to_many для Color, одна для мужских цветов и одна для женских цветов. То, как я справлялся с этим, - использовать модель объединения BirdColoration, которая принадлежит птице и цвету, и имеет дополнительное логическое поле, чтобы определить, является ли окраска для мужчин или женщин. Таким образом, каждая птица на самом деле имеет отношение to_many к BirdColoration, а также to_many to Color: через BirdColoration. Если это звучит разумно, продолжайте чтение. В противном случае остановитесь и скажите мне, почему это неправильно!
Мне нужно, чтобы вываливать стол для птиц как json. Раньше, когда у каждой птицы была только одна ассоциация to_many с цветами, я мог просто использовать: include включить цвета каждой птицы в дампе json. Теперь я включаю BirdColorations в дампе, но мне все равно нужно попасть на цветные модели. Я мог бы отдельно включать цвета и цвета каждой птицы, а затем сопоставлять их во время разбора, но я бы скорее просто включил каждый цвет окраски напрямую. Что-то вроде
format.json { render :json => @birds.to_json(:include => [{:bird_colorations => :color}, :seasons, :habitats, :image_holders]) }
Вышеприведенное не работает. Я думаю, что это должно быть возможно. Может ли кто-нибудь указать мне в правильном направлении, как справиться с этим?
Пока, я просто добавлю каждый цвет и окраску птиц отдельно и сопоставляю их при разборе. По крайней мере, я знаю, что это сработает.
Спасибо!