У меня есть код ниже, который отлично подходит для удаления записи, но при попытке вставить записи в таблицу, используя обратный вызов after_save, ничего не делает.Rails after_save callback not firing
По существу, я создаю серию расширенных отношений, которые должны создавать или удалять отношения из таблицы campaign_category_metro_bids. Если я запускаю PHPMyAdmin, проблем нет. Но веб и активируя в рельсах позволяет только для второго обратного вызова, after_destroy быть называется ...
class CampaignMetro < ActiveRecord::Base
belongs_to :campaign
belongs_to :metro
after_destroy :destroy_category_campaign_metro_bid
after_save :create_category_campaign_metro_bid
def create_category_campaign_metro_bid
insert = "INSERT INTO campaign_category_metro_bids (campaign_id,category_id, metro_id, created_at, updated_at)
SELECT e.campaign_id, e.category_id, e.metro_id, NOW(), NOW()
FROM
(SELECT c.campaign_id, c.category_id, c.metro_id
FROM (SELECT a.campaign_id, a.category_id, b.metro_id
FROM campaign_categories a
cross join campaign_metros b
ON a.campaign_id = b.campaign_id) c) e
LEFT JOIN campaign_category_metro_bids d
ON d.campaign_id = e.campaign_id and
d.category_id = e.category_id and
d.metro_id = e.metro_id
WHERE d.campaign_id is null and
d.category_id is null and
d.metro_id is null;"
ActiveRecord::Base.connection.execute(insert)
end
def destroy_category_campaign_metro_bid
delete="DELETE d.*
FROM campaign_category_metro_bids d
LEFT JOIN
(SELECT c.campaign_id, c.category_id, c.metro_id
FROM (SELECT a.campaign_id, a.category_id, b.metro_id
FROM campaign_categories a
cross join campaign_metros b
ON a.campaign_id = b.campaign_id) c) e
ON d.campaign_id = e.campaign_id and
d.category_id = e.category_id and
d.metro_id = e.metro_id
WHERE e.campaign_id is null and
e.category_id is null and
e.metro_id is null;"
ActiveRecord::Base.connection.execute(delete)
end
end
Как я могу получить эту работу?
Я пробовал, что это не сработало. Я использую обратные вызовы в таблице, которая создается через вызовы SQL, а не активная запись. – Sauron
Можете ли вы получить какой-либо запрос на сохранение/фиксацию вообще для запуска в этой модели? Если это будет создано неявно, добавив метро в кампанию или наоборот, тогда это будет проблемой, и мы сможем изучить решения для этого – rafb3
. Я переместил весь процесс в модель, которая создается с активной записью, и работает точно так же, как это должен. Нет проблем – Sauron