Я наблюдал ActiveRecord delete_all игнорирует условие таблицы соединений.Это известная проблема сообщества rails?
Запрос:
DesignPartCategory.joins(:category).where(category: {site_id: INDIA}, designpart_uuid: ['123C']).delete_all
Ожидаемый результат:
УДАЛИТЬ ИЗ designpart_category
ГДЕ designpart_category
. designpart_uuid
IN ('123C') И designpart_category
.category_id
IN (ИНДИЯ);
Фактический результат:
DELETE FROM `designpart_category` WHERE `designpart_category`.`designpart_uuid` IN (SELECT designpart_uuid FROM (SELECT `designpart_category`.`designpart_uuid` FROM `designpart_category` INNER JOIN `category` ON `category`.`category_id` = `designpart_category`.`category_id` WHERE (category.site_id =INDIA AND designpart_category.designpart_uuid in ('123C'))) __active_record_temp);
В настоящее время delete_all Операция просто игнорирует / отменяет условие таблицы соединений и выполняет оставшуюся часть запроса..
Я предполагаю, что это не должно иметь место, он должен генерировать исключение вместо игнорирования соединений.Пожалуйста, дайте нам знать ваши мысли / комментарии к нему.