Создать миграцию - создать таблицу соединений
Я просмотрел много сообщений SO
и google
для генерации миграции таблицы соединений для ассоциации has many and belongs to many
и ничего не работает.
Все решения генерируют пустой файл миграции.
Я использую rails 3.2.13
, и у меня есть две таблицы: security_users
и assignments
. Вот некоторые из моих попыток:
rails generate migration assignments_security_users
rails generate migration create_assignments_security_users
rails generate migration create_assignments_security_users_join_table
rails g migration create_join_table :products, :categories (following the official documentation)
rails generate migration security_users_assignments security_user:belongs_to assignments:belongs_to
Может ли кто-нибудь сказать, как создать миграцию таблицы соединений между двумя таблицами?
Ответы
Ответ 1
Запустите эту команду, чтобы сгенерировать пустой файл миграции (он не заполняется автоматически, вам нужно заполнить его самостоятельно):
rails generate migration assignments_security_users
Откройте созданный файл миграции и добавьте этот код:
class AssignmentsSecurityUsers < ActiveRecord::Migration
def change
create_table :assignments_security_users, :id => false do |t|
t.integer :assignment_id
t.integer :security_user_id
end
end
end
Затем запустите rake db:migrate
с вашего терминала. Я создал викторину по отношениям many_to_many с простым примером, который мог бы вам помочь.
Ответ 2
Чтобы автопопулить команду create_join_table в командной строке, она должна выглядеть так:
rails g migration CreateJoinTableProductsSuppliers products suppliers
Для модели продукта и модели поставщика. Rails создаст таблицу под названием "products_suppliers". Обратите внимание на плюрализацию.
(Обратите внимание, что команда generation
может быть сокращена до g
)
Ответ 3
Мне обычно нравится иметь "модельный" файл, когда я создаю таблицу соединений. Поэтому я делаю.
rails g model AssignmentSecurityUser assignments_security:references user:references