0

我刚刚将 cequel 从 1.10.0 更新到 3.2.1,我有以下模型:

module Messaging
  class ThreadsForUser
    include Cequel::Record
    include Sunspot::Cequel

    self.table_name = :messaging_threads_for_users

    key :user_id, :bigint
    key :thread_id, :timeuuid, order: :desc

我有以下查询(这在 1.1.0 中可以正常工作):

  connection.execute(
    "DELETE FROM #{table_name} WHERE thread_id = ? AND user_id in (?)",
    thread_id, user_ids
  )

但在 3.2.1 中,我收到:

ArgumentError: argument for "user_id" must be bigint, [3] given

whereuser_ids是一个带有 3 的数组。不知道我该如何解决这个问题,知道吗?

4

1 回答 1

1

您需要在这里使用语法:

DELETE FROM #{table_name} WHERE thread_id = ? AND user_id in ?

在这种情况下,完整列表将被 driver into 替换in,而在您的变体中,您传递的是IN由一个元素组成的 - 这是有效的语法,您只需传递整数值而不是整数列表。

于 2019-04-30T09:24:03.760 回答