ActiveRecord Query не возвращает результатов при рендеринге представления, но один результат при запуске в консоли - почему? - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть запрос, сгенерированный ActiveRecord, который генерирует следующий SQL:

SELECT  "v410_skus".* 
FROM "v410_skus" 
INNER JOIN "v410_ordered_skus_v410_skus" ON "v410_skus"."id" = "v410_ordered_skus_v410_skus"."v410_sku_id" 
INNER JOIN "v410_ordered_skus" ON "v410_ordered_skus_v410_skus"."v410_ordered_sku_id" = "v410_ordered_skus"."id" 
WHERE 
  "v410_skus"."deleted_at" IS NULL 
  AND "v410_ordered_skus"."deleted_at" IS NULL 
  AND "v410_ordered_skus"."id" = 1
LIMIT 1;

Я ожидаю, что он вернет одну строку.Это определенно там!Но когда этот запрос выполняется как часть обратного вызова before_destroy, результатом будет nil.

. Я попытался выполнить запрос raw в двух местах: в консоли и через binding.pry в соответствующей точкеМой before_destroy метод обратного вызова:

ActiveRecord::Base.connection.exec_query('
  SELECT  "v410_skus".* 
  FROM "v410_skus" 
  INNER JOIN "v410_ordered_skus_v410_skus" ON "v410_skus"."id" = "v410_ordered_skus_v410_skus"."v410_sku_id" 
  INNER JOIN "v410_ordered_skus" ON "v410_ordered_skus_v410_skus"."v410_ordered_sku_id" = "v410_ordered_skus"."id" 
  WHERE 
    "v410_skus"."deleted_at" IS NULL 
    AND "v410_ordered_skus"."deleted_at" IS NULL 
    AND "v410_ordered_skus"."id" = 1
  LIMIT 1;
')

Опять, консоль возвращает одну строку (правильно), и в binding.pry я получаю nil.

Я подтвердил, что запросвсе в порядке, запустив его непосредственно в psql - я все еще получаю одну строку.

Что может привести к тому, что запрос, который идентичен, возвращает два разных результата в разных контекстах?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...