我看了https://stackoverflow.com/a/13754977/1979953。
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 :(得分:2)
使用reduce
:
conditions = foo.reduce(:or)
User.where(conditions)
在你的情况下,它可以只是:
User.where(id: [1, 2, 3])
上面的代码构造了where id in (1, 2, 3)
查询。