У меня есть запрос, сгенерированный 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
- я все еще получаю одну строку.
Что может привести к тому, что запрос, который идентичен, возвращает два разных результата в разных контекстах?