如何在ActiveRecord中创建“OR”语句?

时间:2010-08-27 19:40:30

标签: ruby-on-rails activerecord

我正在尝试在ActiveRecord 3中创建一个'OR'sql语句,我尝试了各种各样的变体,但无法弄明白......

例如,我希望此查询包含多个“channel_ids”,并让它返回任何频道ID的所有帖子。这适用于一个:

Post.where(:user => 'mike').where(:channel_id => 0).limit(20)

但我无法弄清楚如何用倍数来做,我试过了例如:

Post.where(:user => 'mike').where(:channel_id => ?, [0,1,2,3]).limit(20) 

但它不起作用。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:5)

试试这个:

Post.where("posts.user = ? OR posts.channel_id IN (?)", "mike", ids)

答案 1 :(得分:4)

使用Arel方法执行此操作:

t = Post.arel_table
ids = [1,2,3]

Post.where(
  t[:user].eq("mike").or(t[:channel_id].in(ids))
)