2015-11-30 2 views
1

Я прочитал https://stackoverflow.com/a/13754977/1979953.Как подключить или от Arel Array

user = User.arel_table 

u1 = user[:id].eq(1) 
u2 = user[:id].eq(2) 
u3 = user[:id].eq(3) 

result = User.where(u1.or(u2).or(u3)) 

в порядке.

Как цеплять, как указано выше? использовать each или map т.д.

user = User.arel_table 

foo = [ 
    user[:id].eq(1), 
    user[:id].eq(2), 
    user[:id].eq(3) 
] 

result = foo.map{|o| ??? } 
+0

[Вы также можете найти это сообщение полезным (нестроковые способы построения или запросы по разным столбцам)] (http://stackoverflow.com/q/31096009/3444240) – potashin

ответ

2

reduce Использование:

conditions = foo.reduce(:or) 
User.where(conditions) 

В вашем случае это может быть просто:

User.where(id: [1, 2, 3]) 

Код выше конструкции where id in (1, 2, 3) запроса.

 Смежные вопросы

  • Нет связанных вопросов^_^