У меня есть модель для организации (вложенный набор).У меня есть модель для людей.Человек может иметь другого человека в качестве заместителя.Организация принадлежит человеку.Организация видна только владельцу или его заместителю.
Я хотел бы получить все организации, видимые данному человеку, т.е.все организации, принадлежащие этому лицу или принадлежащие людям, для которых данное лицо является депутатом:
o = Arel::Table.new(:organisations)
p = Arel::Table.new(:people)
pd = p.where(p[:id].eq(3).or(p[:deputy_id].eq(3))).project(:id)
op = o.join(p).where(o[:person_id].in(pd)).project("distinct organisations.*)
Возможно, существует лучший способ сформулировать последнее объединение, но я хотел бы разделить запрос налюди и их заместители из запроса организаций, видимых людям и их заместителям.
При последнем объединении возвращается Arel :: SelectManager (для которого нигде нет полезной документации).
Есть лиспособ преобразовать SelectManager обратно в ActiveRecord :: Relation, чтобы извлечь выгоду из всей концепции «замыкания по составу»?
Как самостоятельно присоединиться к вышеуказанному запросу к организациям, чтобы получить всех потомков организацийвиден человеку или его заместителю?Я знаю SQL, но всегда с SelectManager не удается выполнить самостоятельное объединение в организациях.