我有一个组织模型(嵌套集).我有一个适合人的模特.一个人可以让另一个人担任副手.一个组织由一个人拥有.只有拥有者或其代理人才能看到组织.
我想检索给定人员可见的所有组织,即.所有由该人拥有或由人拥有的组织,其中给定的人是代理人:
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.*)
Run Code Online (Sandbox Code Playgroud)
可能有一种更好的方式来制定最后一次加入,但我想从人们及其副手可见的组织的查询中拆分人和他们的代表的查询.
最后一个连接返回一个Arel :: SelectManager(在任何地方似乎都没有有用的文档).
有没有办法将SelectManager转换回ActiveRecord :: Relation,以便从"封闭下的组合"的整个概念中受益?
我如何再次自组织上述组织的查询,以获取一个人或他们的副手可见的组织的所有后代?我知道SQL但总是失败,SelectManager在组织上进行自我加入.