Ответ 1
Мне нравится ваш вопрос, я задался вопросом, почему это не включено в Rails (и, как я подозреваю, недоступен как Gem). Вот некоторые из причин, почему это может быть проблемой. Я объясню их в типичном примере с помощью assemblies
и parts
.
-
Леса используются с помощью генераторов для создания файлов. Если вы перейдете на новую версию, иногда можно обновить существующие файлы, выполнив следующие шаги:
- Скопируйте существующие в новое имя.
- Перезаписать существующие новые.
Это означает, что нет понятия добавления файлов или изменения файлов. EDIT. Это неверно, есть механизмы для добавления файлов и даже изменения в файлах.
-
Если вы посмотрите на генерацию, например,
has_many :through
(должно быть похоже наhas_and_belongs_to_many
), вы должны сделать следующее:-
Добавьте миграцию, которая создает таблицу соединений.
== > Должно быть возможно для строительных лесов:
rails g scaffold_hmt Assembly Part
-
Добавьте модель для этой модели соединения.
== > Должно быть возможно для строительных лесов предыдущим эшафотом.
-
Измените существующие модели на включение строк:
assembly.rb:
has_many 'assemblies_parts'; has_many :parts, :through => 'assemblies_parts'
part.rb:
has_many 'assemblies_parts'; has_many :assemblies, :through => 'assemblies_parts'
== > Таким образом, никаких строительных лесов не возможно
- Что делать с представлениями широко распахнуто. Есть примеры в RailsCast, как это сделать, но это совсем не тривиально, и нет ни одного единого метода, который бы хорошо работал при любых обстоятельствах. Я думаю, что различные шаблоны могут быть реализованы как шаблоны для строительных лесов (например, для использования флажков или списков с несколькими выборами или ввода текста с завершением). Однако проблема та же, что и в представлениях
has_many
.
-
Итак, как итог, эшафот может стоить попробовать (см. следующий параграф). RailsGuides для Создание и настройка генераторов и шаблонов Rails кажется правдоподобным. И решение, которое генерирует части файлов, называет их соответствующим образом и помогает в выводе леса на консоль, чтобы сделать все остальное вручную, может стоить попробовать.
Я попытался вчера придумать частичное решение, вы можете посмотреть его на GitHub. Он работает следующим образом:
- Скопируйте содержимое каталога
scaffold_hmt
(означаетhas_many :through
) в каталог приложений railslib/generators
. - Вы можете вызвать генератор с помощью
rails g scaffold_hmt Assembly Part
. - Затем он будет генерировать:
- Миграция для таблицы соединений
- Модель для таблицы соединений
-
Не удается изменить файлы:
- Модель
assembly.rb
- Модель
part.rb
Причиной этого является то, что нахождение правильного места не является тривиальным. В качестве обходного пути он распечатывает то, что должно было вставляться в файлы.
c:\apps\ruby\rails3\minds>rails generate scaffold_hmt Assembly Part create db/migrate/20111011135944_create_assemblies_parts.rb create app/models/assemblies_part.rb Try to insert into file: app/models/assembly.rb the following statements: has_many :assemblies_parts has_many :parts, :through => :assemblies_parts insert app/models/assembly.rb Try to insert into file: app/models/part.rb the following statements: has_many :assemblies_parts has_many :assemblies, :through => :assemblies_parts insert app/models/part.rb
- Модель
Попробуйте и посмотрите, поможет ли это вам.