2016-08-30 3 views
0

Модель:Рельсы: Многие ко многим проектирования баз данных

Материал
менеджер

Отношения
Один пункт должен быть утвердить многими менеджерами.
Один менеджер должен одобрить многие предметы.

Я не знаю, как создать связь many_to_many. я планируюсь создать присоединяемую таблицу, как этого

Model Approval: 
item_id, 
manager_id 

Проблема в том, что если я разрабатываю модель как это утверждение будет иметь один менеджер или несколько менеджеров, но ситуация такова, что количество менеджеров может изменить все время , поэтому трудно установить определенное количество менеджеров в модели Approval.

Как решить эту проблему?

ответ

0

модели:

class Material < ApplicationRecord 
    has_and_belongs_to_many :managers 
end 

class Manager < ApplicationRecord 
    has_and_belongs_to_many :materials 
end 

Миграции:

class CreateManagerssAndMaterials < ActiveRecord::Migration 
    def change 
    create_table :managers do |t| 

    end 

    create_table :materials do |t| 

    end 

    create_table :managers_materials, id: false do |t| 
     t.belongs_to :manager, index: true 
     t.belongs_to :material, index: true 
    end 
    end 
end 

Вы можете найти больше здесь rails migrations has_and_belogs_to_many

, например, в контроллере:

@material = Material.find(5) 
@material.managers << [Manager.find(1), Manager.find(2)] 
+0

Не могли бы вы показать мне, как добавить внешний ключ к моделям? Например, добавьте два ящика с идентификаторами 1 и id 2, к материалу с идентификатором 5. Я надеюсь узнать, как его использовать в контроллере –

Смежные вопросы