0

我在 ActiveRecord 中有 2 个模型,比如 A 和 B,并且都有 item_id 字段,这是两个模型中的主键。

但是,它们之间没有关联(has_many、belongs_to 等)

答:item_id、attr_1、attr_2

B: item_id, attr_3, attr_4

现在,我需要从 A 和 B 获取一些涉及 attr_1 ..attr_4 的子句的数据

SQL: select A.item_id, attr_1, attr_2, attr_3, attr_4 from A, B where A.item_id=B.item_id and attr_1="foo" and attr_3="bar"

我现在正在考虑的选项是,A 和 B 都将查询分解(表、子句、字段等)返回给控制器,并让控制器像上面一样创建查询。然后使用 ActiveRecord::Base.connection.execute(query) 执行查询

PS:不想从第一个模型中获取结果,对其进行迭代并从第二个模型中获取结果。会导致过多的db查询。此外,不要合并两个表,因为它们包含不相关的数据。

有更好的建议吗?

4

1 回答 1

0

加入之类的?

A.joins('JOIN bs ON bs.item_id = as.item_id AND as.attr_1="foo" AND bs.attr_3="bar"').select("as.attr_1, as.attr_2, bs.attr_3, bs.attr_4")

这是未经测试的,但接近的东西也应该起作用。

于 2013-07-01T21:49:48.727 回答