Rails 4 - Динамично картографиране на модел върху две различни таблици на база данни

Имам приложение с няколко домейна, което говори с наследена база данни. В тази DB имам две таблици с различни имена, нека ги наречем USER_A и USER_B. Тяхната структура и типове данни са абсолютно еднакви, единствената разлика е, че те получават своите данни от различни домейни.

Сега бих искал да имам single scaffold (model/controller/view), който в зависимост от домейна да се преобразува в правилната DB таблица.

Домейн A ще работи с модел/контролер, наречен User, който се преобразува вътрешно в db таблицата USER_A, а Домейн B ще работи със същия модел/контролер User, но се припокрива към таблицата USER_B.

Бих искал също да използвам resource :user в моите маршрути за достъп до модела по пътя на релсите.

Така че по някакъв начин трябва да презапиша модела при инициализация, но не съм съвсем сигурен как да го направя.

Как може да се направи това с помощта на Rails ActiveRecord?




Отговори (1)


Имам предвид как този проблем може да бъде коригиран?
person fylooi    schedule 30.07.2015
comment
Правейки го по този начин, няма да имате нужда от потребителския клас. В момента го правя по този начин, но не е много сухо .... - person mahatmanich; 31.07.2015
comment
@mahatmanich: Единственото нещо в подкласовете трябва да е извикването self.table_name. Всички валидации/отношения/и т.н. трябва да влизат в родителския клас User. Как го смятате за неСУХ? - person fylooi; 31.07.2015
comment
Това, което се опитвам да постигна, е да има един модел, един контролер, картографиран като ресурс в маршрути. Нещо като псевдо MTI, тъй като наистина трябва да използвам STI, но не ми е позволено да променя структурата на DB. - person mahatmanich; 31.07.2015
comment
@mahatmanich: Не мислете, че е възможно да дефинирате table_name след инициализация, така че ето алтернатива, която го прави в самия модел. Все пак бих препоръчал първия метод. - person fylooi; 31.07.2015
comment
благодаря, че отделихте време да помогнете. В момента всъщност се опитвам да направя първото ви предложение да проработи и да видя как ще се получи. - person mahatmanich; 31.07.2015
comment
Добре, отказвам се от това, благодаря за помощта, но ще трябва да използвам MVC конструкция за всяка таблица. Благодаря за помощта. - person mahatmanich; 31.07.2015