Работа с устаревшими представлениями базы данных в рельсах - PullRequest
2 голосов
/ 02 марта 2011

Я новичок в ruby ​​и rails, и мне трудно осмыслить методы MVC в сочетании с представлениями базы данных. Я имею дело с устаревшей базой данных, в которой есть несколько видов, которые используются для создания отчетов.

Где я заблудился, как я на самом деле использую представление базы данных. Должно ли это быть в модели? Если да, то как именно это будет выглядеть?

В качестве примера у устаревшей базы данных есть представление с именем qryTranscriptByGroup. Он используется в унаследованном приложении в инструкции SQL, такой как «SELECT * FROM qryTranscriptByGroup WHERE group = 'test_group'". Это возвращает небольшое количество записей, обычно меньше 100.

Если я создам модель Transcript, как бы я определил метод, такой как Transcript.find_by_group (group)? Кроме того, может показаться, что мне может понадобиться запретить любые другие методы поиска, поскольку в этом контексте они будут недопустимыми.

Существует также тот факт, что представление доступно только для чтения, и мне нужно было бы предотвратить любые попытки его создания, обновления или уничтожения.

Возможно, я поступаю об этом совершенно неправильно. Суть в том, что мне нужно получить информацию из нескольких таблиц (моделей?), Которые представляют информацию о пользователе (стенограмма). На самом деле один или несколько пользователей (расшифровки стенограммы).

-Спасибо!

1 Ответ

6 голосов
/ 02 марта 2011

Вы можете использовать представление базы данных как обычную модель.

В вашем случае:

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.

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

...