Как мне создать отношения многие-один с помощью Scaffold? - PullRequest
12 голосов
/ 04 апреля 2010

Я новичок в Ruby on Rails и пытаюсь создать репетитора по бас-гитаре, чтобы научить себя RoR (и бас-гитаре).В пошаговых руководствах для создания классов ActiveRecord используется Scaffold, но, похоже, они соответствуют автономным таблицам;нет смысла использовать belongs_to или has_many.

. Я хотел бы создать три класса: Scale, GuitarString и Fret.В каждой шкале есть много GuitarStrings, у каждой из которых много ладов.

Как мне создавать классы с этим отношением, используя Scaffold?Есть ли способ сделать это за один раз, или мне нужно создать их в несвязанном состоянии с помощью Scaffold, а затем добавить отношения вручную?Или я должен полностью отказаться от эшафот?

1 Ответ

17 голосов
/ 04 апреля 2010

Я начал изучать Ruby on Rails несколько недель назад, и я обнаружил, что гораздо проще освоить все и научиться обходиться без использования скаффолдинга и генерации различных частей из командной строки (или макросы в IDE).

Однако из того, что я могу сказать, когда вы используете скаффолдинг для генерации вещей, вы думаете о нем как о генераторе «ресурса», поэтому вы будете создавать только один ресурс за раз, а затем добавляете отношения рука позже.

Однако команда создания модели может создать эти отношения для вас. Допустим, вы использовали скаффолдинг для создания ресурса Scale.

Вы могли бы тогда сделать

ruby script/generate model GuitarString name:string scale:references 

Scale: ссылки создадут belongs_to :scale для вашей модели GuitarString, но вам нужно добавить has_many: guitarstrings в вашу масштабную модель.

Команда создания модели также создает сценарий миграции для вас и других необходимых файлов (фикстур), аналогично скаффолдингу, но не создает автоматически представления, контроллеры или что-либо еще.

EDIT:

Это, как правило, то, что вы хотите делать - использовать генерацию / модель или генерацию / просмотр или генерацию / контроллер или генерацию / миграцию. Большинство разработчиков Rails не используют скаффолдинг, так как его «один размер подходит всем» редко подходит идеально. Тем не менее, большинство разработчиков rails используют команды генерации, о которых я упоминал, - это экономит время, создавая помощники и приборы вручную, и дает каждому файлу генерируемый базовый шаблон, который вы можете добавить.

Некоторые Ruby IDE, такие как RubyMine JetBrain, имеют макросы, которые по существу выполняют эти команды. В RubyMine вы можете выполнить ctrl + alt + g, а затем ввести другой ключ, соответствующий тому, что вы хотите сгенерировать.

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

...