помощь лесов рельсов - PullRequest
       12

помощь лесов рельсов

0 голосов
/ 30 октября 2009

говорят, что я хочу создать элитный университет

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

в моей команде скаффолд я должен включить state_id ??

script/generate scaffold university name:string address:string state_id:int

... Я знаю, что мне придется обновить мои модели, чтобы они понимали это отношение один ко многим, но я не думаю, что это лучший способ просто добавить столбец в базу данных вручную .... так что мой вопрос. ... какой будет наиболее подходящий подход? я делаю это правильно? пожалуйста, помогите.

Ответы [ 3 ]

3 голосов
/ 30 октября 2009

Как вы знаете, леса не предназначены для окончательного применения, они просто предоставляют удобный способ автоматического создания отправной точки для ваших представлений.

Вероятно, самый простой способ сделать это - заставить scaffold генерировать миграцию для столбцов, которые будут отображаться в ваших представлениях как поля. Затем создайте вторую миграцию для тех столбцов, которые не будут.

script/generate scaffold university name:string address:string
script/generate migration add_status_id_to_universities state_id:integer another_hidden_column:string
rake db:migrate

Это работает, даже если вы уже мигрировали один раз.

P.S. Возможно, вы захотите взглянуть на плагин ActiveScaffold , чтобы автоматически адаптировать ваши представления к изменениям базы данных.

0 голосов
/ 30 октября 2009

Там нет правильного ответа. Вы можете включить его при создании каркаса или пропустить его и добавить в миграцию позже перед выполнением rake db:migrate.

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

0 голосов
/ 30 октября 2009

Вот как я это делаю. Так что да, если у кого-то нет лучшего способа.

...