Я пытаюсь разрешить моему Rails-приложению некоторые расширенные функции для создания отношений. Я использую MySQL как фоновый. Нижеприведенный запрос выполняется только в PHPMyAdmin, но при попытке выполнения в рельсах он ничего не делает, никаких ошибок и никакой базы данных не пишет....
Я использую активную запись для создания отношений между кампанией и местоположением, а затем следующий запрос должен работать после сборки в таблице campaign_metros:
class CampaignLocation < ActiveRecord::Base
belongs_to :campaign
belongs_to :location
after_touch :create_campaign_metro
private
def create_campaign_metro
@sql_insert="INSERT INTO `campaign_metros` (`campaign_id`,`metro_id`, `created_at`,`updated_at`)
SELECT f.`campaign_id`, f.`city_id`, NOW(), NOW()
FROM (SELECT d.`campaign_id`, d.`city_id`
FROM (SELECT c.`campaign_id`, c.`city_id`
FROM (SELECT distinct a.`campaign_id`, b.`city_id`
FROM `campaign_locations` a
INNER JOIN `locations` b
ON a.`location_id` = b.`id`) c) d
LEFT JOIN `campaign_metros` e
ON e.`campaign_id` = d.`campaign_id` and
e.`metro_id` = d.`city_id`
WHERE e.`metro_id` is null and e.`campaign_id` is null) f;"
ActiveRecord::Base.connection.execute(@sql_insert)
end
end
Я знаю из MySQL DELETE FROM с подзапросом как условие, в ответе номер два от CodeReaper, что MySQL требует другого уровня псевдонимов при работе с подзапросами, но запуск моего запрос в Rails ничего не делает.
Как я могу заставить это работать?