добавление дополнительного атрибута в команду rails - PullRequest
6 голосов
/ 05 декабря 2011

Пытаясь создать новый каркас с помощью - collection> rails generate scaffold Items name:string subcategory_id:integer users_id:integer, я пропустил 'users_id: integer' и то, как я могу использовать этот атрибут, а не запускать полную команду снова.

Спасибо

Ответы [ 3 ]

4 голосов
/ 05 декабря 2011

Если вы еще не перенесли миграцию, вы можете отредактировать db / migrate / 201112 * create_items.rb и добавить следующую строку:

add_column :items, :users_id, :integer

Если вы уже перенесли миграцию, создайте еще одну:

rails generate migration AddUsersIdToItems users_id:integer
rake db:migrate

Тогда вам придется вручную редактировать код скаффолда:

vi app/views/items/_form.html.erb

Скопируйте

для subcategory_id и измените его на: users_id
<div class="field">
  <%= f.label :subcategory_id %><br />
  <%= f.number_field :subcategory_id %>
</div>
<div class="field">
  <%= f.label :users_id %><br />
  <%= f.number_field :users_id %>
</div>

В качестве альтернативы, если вы используете git, вы могли бы запустить "git checkout". после запуска первого генератора скаффолдов, который отменяет все ваши изменения, вы можете запустить его снова.

4 голосов
/ 05 декабря 2011

Не совсем.

Если вы еще не добавили ничего нового в существующий каркас (и просто беспокоитесь о необходимости удалить / воссоздать все эти файлы), то сначала вы можете запустить команду уничтожить, а затем воссоздать, например:

rails destroy scaffold Items
rails generate scaffold Items name:string subcategory_id:integer users_id:integer
0 голосов
/ 11 сентября 2014

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

Если вы забыли добавить атрибут, используйте миграцию, чтобы добавить его (rails g миграции поле AddXXXToYYY: тип), а затем снова запустите скаффолд, как Iобъяснено выше.

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

...