我在Rails应用中有两个模型,分别为Organization
和Warehouse
。 Warehouse
中的条目通过Organization
(“自有”仓库)或Warehouse.organization_id
(“委派”仓库)属于Warehouse.delegated_to_organization_id
中的条目。
用例要求我遍历所有仓库及其“负责任”的组织:“委托”组织(如果存在),否则为“拥有”组织。但是,用例要求我将所有仓库按组织分组并按批次(1)执行,这导致我采用这种方法:
def organizations
Organization.joins(warehouse_join)
end
def warehouse_join
<<~SQL
INNER JOIN warehouses
ON coalesce(
warehouses.delegated_to_organization_id,
warehouses.organization_id,
-1
) = organizations.id
SQL
end
但是,ActiveRecord似乎忽略了联接:organizations.first.warehouses
总是产生[]
,而用ActiveRecord::Base.connection.execute(organizations.to_sql.gsub('"organizations".*', '*')).to_a
执行查询时将显示warehouses
表中的联接字段。
我在做什么错,我该怎么做?
((1)数据量太大,无法将所有内容都读取到内存中,因此实际查询将成批执行(已附加limit
。]]
我在Rails应用中有两个模型,组织和仓库。仓库中的条目通过Warehouse.organization_id(“自有”仓库)或仓库属于组织中的条目。...
organizations.first.warehouses
将仅通过warehouses
提取organization_id
。您的warehouse_join
不会影响这种关系。