Лучше всего использовать этот код:
Campaign.includes(:media).map(&:media)
(используется английская грамматика, надеюсь, вы поняли основную идею). Это получит все в двух запросах.
--- EDIT ---
Если media - это has_many
ассоциация, то возвращаемое значение будет иметь вид: [[...],[..]]
, поэтому в этом случае используйте flaten
, чтобы сделать его простым массивом.
В случае, когда нужны все Medium
для всех Camplaign
, используйте метод массивов group
для сбора уникальных или просто простых uniq
. Такой подход к использованию классов Rails предпочтителен, так как он более общий и настраиваемый, например, он будет применять любые области по умолчанию, которые могут быть на Campaign
.