Има няколко начина да се справите с тази ситуация:
- Можете да използвате задействане на база данни. Това не е опция, независима от базата данни и доколкото знам, поддръжката на RoR за нея не съществува. Ако ситуацията ви не изисква абсолютно никакво несъответствие на данните, това вероятно би бил най-ефективният начин да постигнете целта си, но аз не експерт по база данни.
- Можете да използвате пакетна операция за периодично синхронизиране на двете таблици. Този метод позволява на двете ви таблици да се отдалечат и след това периодично синхронизира данните. Ако ситуацията ви позволява да се случи това отклонение, това може да е добър вариант, тъй като позволява на БД да се актуализира в извънработно време. Ако трябва да правите синхронизирането на всеки 5 минути, вероятно ще искате да разгледате други опции. Това може да се оправи от вашия код на ruby, но ще изисква някакъв вид фонова програма (cron, delayed_job, redis и т.н.)
- Можете да използвате обратно извикване от вашия модел Rails. Можете да използвате
"after_update :sync_denormalized_data"
. Това обратно извикване ще бъде обвито в транзакция на ниво база данни (ако приемем, че вашата база данни поддържа транзакции). Ще имате код на ниво Rails, последователни данни и няма нужда от фонов процес за сметка на извършване на две записи всеки път. - Някакъв механизъм, за който не съм се сетил....
Този тип проблеми са много специфично приложение. Дори в рамките на едно и също приложение можете да използвате повече от един от методите в зависимост от изискванията за гъвкавост и производителност.