Rails 3:有没有`AR#or_where`?

时间:2010-12-17 14:39:38

标签: sql ruby-on-rails activerecord where arel

Rails 3中是否有AR#or_where

一样
User.where(cond1).or_where(cond2)

4 个答案:

答案 0 :(得分:4)

在Rails中没有类似的方法。

我认为在WHERE子句中执行OR的最简单方法是执行以下操作:

User.where("first_name = ? OR last_name = ?", params[:first_name], "Wilson")

如果你想学习Arel方法(有一个“或”方法),请看这里:https://github.com/rails/arel#readme。使用Arel和ActiveRecord,你可以做同样的事情:

User.where(User.arel_table[:first_name].eq(params[:first_name]).or(User.arel_table[:last_name].eq('Wilson')))

答案 1 :(得分:2)

您可以查看meta_where。这个gem允许在Ruby代码中使用更强大的ActiveRecord查询表达式,而不需要删除到SQL片段。

答案 2 :(得分:2)

只需使用User.where(cond1) | User.where(cond2),即||由红宝石保留!

答案 3 :(得分:0)

如果你想把它们链接起来,你必须深入研究一下这些问题。请参阅this similar SO question