Работа с устаревшими представлениями базы данных в рельсах
Я новичок в ruby и rails, и мне трудно осмыслить методы MVC в сочетании с представлениями базы данных. Я имею дело с устаревшей базой данных, которая имеет несколько видов, которые используются для создания отчетов.
Где я заблудился, как я на самом деле использую представление базы данных. Должно ли это быть в модели? Если да, то как именно это будет выглядеть?
В качестве примера у устаревшей базы данных есть представление с именем qryTranscriptByGroup. Он используется в унаследованном приложении в инструкции SQL, такой как "SELECT * FROM qryTranscriptByGroup WHERE group='test_group'". Это возвращает небольшое количество записей, как правило, менее 100.
Если бы я создал модель Transcript, как бы я определил метод, такой как Transcript.find_by_group(group)? Кроме того, может показаться, что мне может понадобиться запретить любые другие методы "найти", поскольку они будут недопустимыми в этом контексте.
Существует также тот факт, что представление доступно только для чтения, и мне нужно было бы предотвратить любые попытки его создания, обновления или уничтожения.
Возможно, я иду по этому совершенно неправильному пути. Суть в том, что мне нужно получить информацию из нескольких таблиц (моделей?), Которые представляют информацию о пользователе (стенограмму). На самом деле один или несколько пользователей (стенограммы множественного числа).
-Спасибо!
1 ответ
Вы можете использовать представление базы данных как обычную модель.
В твоем случае:
class Transcript < ActiveRecord::Base
set_table_name "qryTranscriptByGroup"
set_primary_key "if_not_id"
end
Запрос будет тогда:
Trascript.find_by_group('test_group')
без вас ничего не нужно декларировать.
Rails использует метод method_missing для волшебного генерирования методов find_by_column_name.
Для действия создания / обновления / удаления вы можете просто удалить их или не создавать их в контроллере.