我在ActiveRecord中有2个模型,比如说A和B,两个模型都有item_id字段,这两个模型都是主键。
但是,他们之间没有关联(has_many,belongs_to等)
A:item_id,attr_1,attr_2
B:item_id,attr_3,attr_4
现在,我需要从A和B中获取一些涉及attr_1 ..attr_4
的子句的数据SQL:从A,B中选择A.item_id,attr_1,attr_2,attr_3,attr_4,其中A.item_id = B.item_id和attr_1 =“foo”和attr_3 =“bar”
我现在想的选择是,A和B都将查询分解(表,子句,字段等)返回给控制器,让控制器创建如上所述的查询。 然后使用执行查询 的ActiveRecord :: Base.connection.execute(查询)
PS:不想从第一个模型获得结果,迭代它并从第二个模型获得结果。将导致过多的数据库查询。此外,不希望合并两个表,因为它们包含不相关的数据。
有什么更好的建议吗?
答案 0 :(得分: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")
这是未经测试的,但也应该有效。