我的控制器中有以下代码
@production_versions =
Version.where(:item_type => Production)
.where("object like ?", "%miniature_id: #{@miniature.id}%") |
Version.where(:item_type => Production)
.where("object_changes like ?", "%miniature_id: #{@miniature.id}%")
返回所有第一个查询结果,后跟所有第二个查询结果。如何将两者合并以使它们显示为一个列表?
答案 0 :(得分:2)
ActiveRecord没有提供将查询与“或”组合的方法,但您可以在SQL中执行此操作:
@production_versions =
Version.where(:item_type => Production)
.where("object like ? or object_changes like ?",
"%miniature_id: #{@miniature.id}%", "%miniature_id: #{@miniature.id}%")
除了交叉结果之外,这样做更有效率,因为它只运行一个数据库查询,并且只会实例化每个对象一次,即使它满足两个条件。但是,如果您想确定订单,则应order
。