Создание модели со многими ко многим в Ruby on Rails - PullRequest
13 голосов
/ 16 марта 2011

Есть ли способ сгенерировать модель Rails с предопределенным отношением «многие ко многим»?Я знаю, как добавить его в Active Record после факта, но было бы неплохо сразу определить его при переносе БД и модели Active Record.

Ответы [ 3 ]

17 голосов
/ 22 марта 2012

Помните, что вам не нужен идентификатор для таблицы соединений, поэтому обязательно добавьте :id => false |t|

create_table assemblies_parts, :id => false do |t|
  t.integer :assembly_id
  t.integer :part_id
end

Если вы используете рельсы

rails generate model Assemblies_parts assembly:references part:references

у вас будет два индекса, но вы хотите

# Add table index
add_index :assemblies_parts, [:assembly_id, :part_id], :unique => true

UPDATE

  • Для Rails 5 используйте create_join_table вместо для создания этой таблицы (без идентификатора).
3 голосов
/ 16 марта 2011

Вы можете использовать эту ссылку из Руководства по Rails. Вот ссылка .Также вам нужно будет вручную создать таблицу соединений для этих моделей с помощью миграции.

например

    create_table :assemblies_parts, :force => true do |t|
      t.integer :assembly_id
      t.integer :part_id
    end
1 голос
/ 16 марта 2011

Пожалуйста, сначала посмотрите на этот вопрос: Создание отношения «многие ко многим» в Rails 3 .

Кроме того, я бы порекомендовал следующую книгу «Ruby on Rails 3»Учебник. Изучите Rails на примере " для лучшего понимания ActiveRecord отношений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...