Я предпринимаю довольно большое преобразование из устаревшего приложения Windows на основе базы данных в приложение Rails. Из-за большого количества форм и таблиц базы данных, я хочу убедиться, что у меня есть правильная методология, прежде чем идти слишком далеко.
Моя главная задача - минимизировать объем кода, который я должен написать. Есть много моделей, которые взаимодействуют вместе, и я хочу убедиться, что я использую их правильно. Вот упрощенный набор моделей:
класс Пациент
class PatientAddress
class PatientFileStatus
Контроллер определяет, выбран ли пациент; все остальное основано на этом.
По-моему, мне понадобятся данные от каждой из этих моделей. Но, похоже, мне нужно написать переменную экземпляра в моем контроллере для каждого атрибута, который я хочу использовать. Поэтому я начинаю писать код так:
@ пациент = Patient.find (сеанс [: пациент])
@patient_addresses = @ Patient.PatientAddresses
@patient_file_statuses = @ Patient.PatientFileStatuses
@ enrollment_received_when = @patient_file_statuses [0] .EnrollmentReceivedWhen
@consent_received = @patient_file_statuses [0] .ConsentReceived
@consent_received_when = @patient_file_statuses [0] .ConsentReceivedWhen
Первые три строки охватывают модель пациента и его отношения. Следующие три строки являются примерами того, как я предоставляю значения для представления одного из этих отношений.
Вид имеет комбинацию текстовых полей и полей выбора, чтобы отобразить данные выше. Например:
"val1", "val2" => "val2", "Written" => "Written"},: include_blank => true)%>
: force%>
(Кстати, тег select на самом деле не работает; думаю, я должен использовать collection_select?)
Мои вопросы:
- Должен ли я вручную объявлять значение каждой переменной экземпляра в контроллере, или я могу / должен ли я сделать это в представлении?
- Как правильно отображать тег выбора для данных, которые не являются основной моделью?
- Когда я сохраню изменения в этой форме, придется ли мне вручную выбирать атрибуты для каждой модели и сохранять их отдельно? Или есть способ назвать поля так, что ActiveRecord делает правильные вещи?
Заранее спасибо,
Аарон.