Rails使用OR查找活动记录

时间:2011-05-30 16:20:57

标签: ruby-on-rails ruby-on-rails-3

我想通过做这样的事来找到记录

@something = Model.where(X = 1或Y = 1)

但我尝试的所有事情都不起作用。这应该很容易,但我无法在任何地方找到解决方案。

编辑:更具体一点我试图找到X为1且Y为1的所有记录。

3 个答案:

答案 0 :(得分:3)

您很可能希望在模型上使用where子句,即

@something = Model.where('X=1 OR Y=1')

引号内的东西只是SQL,所以这会产生类似于:

的SQL
SELECT `model`.* FROM `model_table` WHERE (X = 1 or y = 1)
希望有所帮助!

伊恩。

答案 1 :(得分:2)

您也可以通过Ryan Bates查看Advanced Queries in Rails 3 Railscast获益匪浅。

答案 2 :(得分:2)

你想要在哪里设置:

| id | x | y |
|  1 | 1 | 0 |
|  2 | 0 | 1 |
|  3 | 1 | 1 |

如果您只想要3:Model.where(:x => 1, :y => 1)

如果你想要1,2和3:

tab=Model.arel_table; Model.where(tab[:x].eq(1).or(tab[:y].eq(1)))

甚至:Model.where(["x=? OR y=?",1,1])如果您的OR语句不复杂。