Команда 1 создает ресурс с нуля: миграция, модель, маршрутизация, контроллер и представления.Он также создает тесты и некоторые ресурсы:
$ rails g scaffold course_subject course_id:integer subject_id:integer
invoke active_record
create db/migrate/20181022020611_create_course_subjects.rb
create app/models/course_subject.rb
invoke test_unit
create test/models/course_subject_test.rb
create test/fixtures/course_subjects.yml
invoke resource_route
route resources :course_subjects
invoke scaffold_controller
create app/controllers/course_subjects_controller.rb
invoke erb
create app/views/course_subjects
create app/views/course_subjects/index.html.erb
create app/views/course_subjects/edit.html.erb
create app/views/course_subjects/show.html.erb
create app/views/course_subjects/new.html.erb
create app/views/course_subjects/_form.html.erb
invoke test_unit
create test/controllers/course_subjects_controller_test.rb
create test/system/course_subjects_test.rb
invoke helper
create app/helpers/course_subjects_helper.rb
invoke test_unit
invoke jbuilder
create app/views/course_subjects/index.json.jbuilder
create app/views/course_subjects/show.json.jbuilder
create app/views/course_subjects/_course_subject.json.jbuilder
invoke assets
invoke coffee
create app/assets/javascripts/course_subjects.coffee
invoke scss
create app/assets/stylesheets/course_subjects.scss
invoke scss
create app/assets/stylesheets/scaffolds.scss
Команда 2 создает миграцию, модель и тест для модели:
$ rails g model course_subject
invoke active_record
create db/migrate/20181022020655_create_course_subjects.rb
create app/models/course_subject.rb
invoke test_unit
create test/models/course_subject_test.rb
create test/fixtures/course_subjects.yml
Команда 3 создает только миграцию:
$ rails g migration course_subject
invoke active_record
create db/migrate/20181022020717_course_subject.rb
Какой вариант выбрать, зависит от ассоциации, которую вы собираетесь использовать.Для простой has_and_belongs_to_many
связи вам не нужна модель для таблицы соединений.Тогда просто создайте миграцию - команда 3 - ваш выбор.Обратите внимание, что таблица соединения должна соответствовать некоторым правилам именования и в этом случае иметь имя courses_subjects
.Пример миграции:
create_table courses_subjects, id: false do |t|
t.references :course
t.references :subject
end
(Поля id
, created_at
и updated_at
не создаются, поскольку они здесь не нужны)
В противном случае, если по какой-либо причине вы 'Если у вас будет доступ к таблице соединений с использованием класса модели или для has_many ... through
связи, вам также потребуется создать модель.Поэтому используйте команду 2.