ArgumentError при непосредственном вызове запроса с помощью cequel - PullRequest
0 голосов
/ 30 апреля 2019

Я только что обновил 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

, где user_ids - массив с 3 на нем.Не уверен, как я могу это исправить, любая идея?

1 Ответ

1 голос
/ 30 апреля 2019

Вам нужно использовать синтаксис, как здесь:

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

В этом случае полный список будет заменен драйвером на in, в то время как в вашем варианте вы передаете IN, состоящий из одного элемента - это правильный синтаксис, вам просто нужно передать целочисленное значение вместо список целых чисел.

...