Работа с устаревшими представлениями базы данных в рельсах

Я новичок в 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.

Для действия создания / обновления / удаления вы можете просто удалить их или не создавать их в контроллере.

Другие вопросы по тегам