如何针对多个值对SQL列执行where查询?

时间:2016-02-06 00:42:36

标签: ruby-on-rails ruby-on-rails-4 activerecord arel

这就是我的查询:

Connection.where("invited_user_id = :user_a_id AND inviter_user_id = :user_b_id", user_a_id: self.inviter.try(:id), user_b_id: self.invited.try(:id)).exists?

我想要做的是基本上针对多个选项检查invited_user_id,例如像invited_user_id = [:user1, :user2]这样的东西。但这不起作用。

如何查看invited_user_id列中的值是否包含在:user1:user2变量或其他任何变量中。

如果不使用明确的OR方法来减少DRY,是否可以实现这一目标?

2 个答案:

答案 0 :(得分:2)

where的哈希表单接受值数组,所以:

Connection.where(invited_user_id: [1, 2, 3, 4, 5])

这将找到invited_user_id是数组中列出的任何值的所有记录。

答案 1 :(得分:2)

永远不要将值直接放在查询中,这是不安全的。使用?运算符对您的查询进行参数化。

invited_user_ids = [:user1, :user2]
Connection.where("invited_user_id IN (?)", invited_user_ids)