Вот проблема, которую трудно объяснить. Итак, вот пример. Допустим, у меня есть это в модели:
has_many :things,
:through => :relationships,
:source => :thing
Мне нужно получить список things
и все данные, которые у меня есть в таблице relationships
. Допустим, это «отношения. Имя». Мы можем сделать это так:
has_many :things,
:through => :relationships,
:source => :thing,
:select => 'things.*, relationships.name as rel_name'
Так что, если есть 2 отношения, я верну 2 объекта:
#<Thing id: 1, rel_name: "foo">
#<Thing id: 1, rel_name: "bar">
Если мы добавим :unique => true
или настроим select для использования DISTINCT
, мы получим уникальные объекты, но данные об одном из отношений исчезнут. Что я действительно хочу, так это уникальные things
со всеми различными именами отношений, собранными в аксессор:
#<Thing id: 1, rel_names: ["foo", "bar"] >
Есть ли какая-то темная магия SQL, о которой я не знаю, которая может это сделать? Для меня важно сохранить область действия, поэтому я не могу просто переключаться между наборами результатов для сбора этих данных.
Спасибо