Ruby on rails 按具有相同值的不同列进行查询

Ruby on rails 按具有相同值的不同列进行查询,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我需要在Rails4中进行查询,在这里我想通过“或”过滤到两个不同的列或字段。我该怎么做?我只知道如何使用一个字段和不同的值进行查询 MyModel.where(my_field: ["var1", "var2"]) 但是我想使用不同的列和相同的值以及“OR”。这样做怎么样: MyModel.where("my_field=? OR my_second_field=?", 'test', 'test') 也可参考第2.2节阵列条件: 这对您很有用: MyModel.where( {some

我需要在Rails4中进行查询,在这里我想通过“或”过滤到两个不同的列或字段。我该怎么做?我只知道如何使用一个字段和不同的值进行查询

MyModel.where(my_field: ["var1", "var2"])

但是我想使用不同的列和相同的值以及“OR”。

这样做怎么样:

MyModel.where("my_field=? OR my_second_field=?", 'test', 'test')
也可参考第2.2节阵列条件:

这对您很有用:

MyModel.where(
 {some_field: "value"} | 
 {some_other_field: "value"}
)
正如Bryan在回答中提到的,字符串插值也是完全有效的。然而,出于以下几个原因,这是我首选的方法:

  • 它可读性很强
  • 如果您决定需要在4个字段(而不是2个字段)中搜索特定的值,同时仍然保持可读性,那么添加更多字段是很容易的

  • @贾瓦纳姆更新了答案,但想法还是一样。你的问题解决了吗?太棒了。如果通过以下答案之一解决了问题,请接受其中一个。否则,请提供你自己的答案并接受它。@jeffdill2,老兄,你为什么如此痴迷于此?我不认为有必要接受一个。这是一个社区——就这样对待它。1.)通过接受或提供/接受答案,此问题将不再出现在“未回答”队列中,这意味着每个人都不必一直浪费时间查看实际上已经有答案的问题,2.)通常情况下,即使回答者也不确定他们的答案是否有效,因为他们试图帮助你解决一个他们以前从未处理过的问题,所以你的接受实际上帮助回答者学习,因为你在验证他们的尝试,…3.)通过提供你自己的答案(如果提供的答案都不适合你),你在帮助社区学习,因为如果他们遇到类似的问题,他们可以看到你是如何解决的,每个人都会从中受益,4。)提高其他用户的声誉也有助于社区,因为你让他们获得更高的特权——对于新用户,你可以帮助他们到可以投票、标记、评论的地方,等等-对于经验丰富的用户,您可以帮助他们获得查看队列的权限、编辑权限等-同样,每个人都会受益。。。