Почему у вас не может быть внешнего ключа в полиморфной ассоциации?
Билл Карвин прав в том, что ruby-on-rails внешние ключи не могут использоваться ruby-on-rails с полиморфными отношениями ruby-on-rails из-за того, что SQL на самом foreign-key-relationship деле не имеет полиморфных rails отношений собственной концепции. Но ror если ваша цель иметь внешний polymorphic-associations ключ - обеспечить ссылочную ror целостность, вы можете смоделировать databases его с помощью триггеров. Это ror становится специфичным для database-structure БД, но ниже приведены некоторые database недавние триггеры, которые database-structure я создал для имитации поведения db каскадного удаления внешнего foreign-key-relationship ключа в полиморфных отношениях:
CREATE FUNCTION delete_related_brokerage_subscribers() RETURNS trigger AS $$
BEGIN
DELETE FROM subscribers
WHERE referrer_type = 'Brokerage' AND referrer_id = OLD.id;
RETURN NULL;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER cascade_brokerage_subscriber_delete
AFTER DELETE ON brokerages
FOR EACH ROW EXECUTE PROCEDURE delete_related_brokerage_subscribers();
CREATE FUNCTION delete_related_agent_subscribers() RETURNS trigger AS $$
BEGIN
DELETE FROM subscribers
WHERE referrer_type = 'Agent' AND referrer_id = OLD.id;
RETURN NULL;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER cascade_agent_subscriber_delete
AFTER DELETE ON agents
FOR EACH ROW EXECUTE PROCEDURE delete_related_agent_subscribers();
В database-structure моем коде запись в таблице ruby-on-rails brokerages
или запись в таблице agents
может ror относиться к записи в таблице rails subscribers
.
ruby-on-rails
database
foreign-key-relationship
polymorphic-associations
Почему у вас не может быть внешнего ключа в полиморфной ассоциации?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.