Создать миграцию-создать таблицу соединений


Я просмотрел много 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 

может ли кто-нибудь сказать, как создать миграцию таблицы соединения между двумя таблицами?

3 51

3 ответа:

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

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 отношения самый простой пример, который может помочь вам.

чтобы автоматически заполнить команду create_join_table в командной строке, она должна выглядеть следующим образом:

rails g migration CreateJoinTableProductsSuppliers products suppliers

для модели продукта и модели поставщика. Rails создаст таблицу под названием "products_suppliers". Обратите внимание на плюрализацию.

(замечу, что generation команда может быть сокращена до просто g)

Мне обычно нравится иметь файл "модель", а когда я создаю таблицу соединения. Поэтому я и делаю.

rails g model AssignmentSecurityUser assignments_security:references user:references