title: PG operator does not exist: uuid = text
body: <p>I have model <code>Conversation</code>, <code>User</code>, which are connected by <code>has_many *, through: users_conversations</code>.</p>
  
  <p>I have this scope:</p>
  
  <pre><code>class Conversation &lt; ActiveRecord::Base
    has_many :users_conversations
    has_many :users, through: :users_conversations
  
    scope :by_participants, -&gt;(ids) {
      joins(:users).where("users.id = ALL (ARRAY[?])", ids)
    }
  end
  </code></pre>
  
  <p>It is expected to find conversations, in which all of required users participate (strictly). </p>
  
  <pre><code>Conversation.by_participants first 
       Failure/Error: its(:first) {is_expected.to eq(@conversation)}
  
       ActiveRecord::StatementInvalid:
         PG::UndefinedFunction: ERROR:  operator does not exist: uuid = text
         LINE 1: ...= "users_conversations"."user_id" WHERE (users.id = ALL (ARR...
                                                                      ^
         HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.
         : SELECT  "conversations".* FROM "conversations" INNER JOIN "users_conversations" ON "users_conversations"."conversation_id" = "conversations"."id" INNER JOIN "users" ON "users"."id" = "users_conversations"."user_id" WHERE (users.id = ALL (ARRAY['7c1a06c8-10c7-417f-96ea-c9c50fcaed35','8af2beca-d5f2-48d7-9857-7b5d124eaac1']))  ORDER BY "conversations"."id" ASC LIMIT 1
       # ./spec/models/conversation_spec.rb:19:in `block (3 levels) in &lt;top (required)&gt;'
  </code></pre>
  
  <p>I tried to inject into array <code>cast (*) as uuid</code>, but PG seems to consider this as just string:</p>
  
  <pre><code>HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.
         : SELECT  "conversations".* FROM "conversations" INNER JOIN "users_conversations" ON "users_conversations"."conversation_id" = "conversations"."id" INNER JOIN "users" ON "users"."id" = "users_conversations"."user_id" WHERE (users.id = ALL (ARRAY['cast (6d4ff0b3-e148-40f8-87b5-d4d03577577a as uuid)','cast (432f4f6e-5832-4831-80dc-c747b8d3e742 as uuid)']))  
  </code></pre>