Как я могу сделать оператор «ИЛИ» в ActiveRecord? - PullRequest
5 голосов
/ 27 августа 2010

Я пытаюсь создать SQL-оператор 'ИЛИ' в ActiveRecord 3, я пробовал все варианты, но не могу понять ...

Например, я хочу, чтобы этот запрос включал несколько 'channel_ids' и чтобы он возвращал все сообщения для любого из идентификаторов канала. Это работает для одного:

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

но я не могу понять, как это сделать с кратными, я пробовал, например:

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

но это не сработало. Как я могу сделать эту работу?

Ответы [ 2 ]

5 голосов
/ 28 августа 2010

Попробуйте это:

Post.where("posts.user = ? OR posts.channel_id IN (?)", "mike", ids)
4 голосов
/ 28 августа 2010

Для этого используйте методы Arel :

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

Post.where(
  t[:user].eq("mike").or(t[:channel_id].in(ids))
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...