OR子句生成的数组数据类型不匹配错误

时间:2013-12-02 23:21:11

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

我有以下查询

friends_ids = [1,2,3]

Friend.where("user_id = ? or friend_id = ?", friends_ids, friends_ids)

但是,当我运行它时,我得到了

PG::DatatypeMismatch: ERROR:  argument of OR must be type boolean, not type integer
LINE 1: ...CT "friends".* FROM "friends"  WHERE (user_id = 2,3 or frien...

很明显OR子句不喜欢数组,所以如何解决这个问题呢?

1 个答案:

答案 0 :(得分:4)

我认为您需要in,而不是=

friends_ids = [1,2,3]

Friend.where("user_id in (?) or friend_id in (?)", friends_ids, friends_ids)