我正在尝试在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)
但它不起作用。我怎样才能做到这一点?
答案 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))
)