0

Я пытаюсь связать Контакты с классами, но как два разных типа. Текущие_классы и Заинтересованные_классы.Связанные модели с полиморфными

Я знаю, что мне нужно включить полиморфный, но я не уверен, где он должен быть включен.

Это то, что я в данный момент

class CreateClasses < ActiveRecord::Migration 
    def self.up 
    create_table :classes do |t| 
     t.string :class_type 
     t.string :class_name 
     t.string :date 

     t.timestamps 
    end 
    end 

    def self.down 
    drop_table :classes 
    end 
end 

class CreateContactsInterestedClassesJoin < ActiveRecord::Migration 
    def self.up 
    create_table 'contacts_interested_classes', :id => false do |t| 
     t.column 'class_id', :integer 
     t.column 'contact_id', :integer 
    end 
    end 

    def self.down 
    drop_table 'contacts_interested_classes' 
    end 
end 

class CreateContactsCurrentClassesJoin < ActiveRecord::Migration 
    def self.up 
    create_table 'contacts_current_classes', :id => false do |t| 
     t.column 'class_id', :integer 
     t.column 'contact_id', :integer 
    end 
    end 

    def self.down 
    drop_table 'contacts_current_classes' 
    end 
end 

А потом внутри моего Контакты Модель Я хочу иметь что-то вроде этого.

class Contact < ActiveRecord::Base 
    has_and_belongs_to_many :classes, :join_table => "contacts_interested_classes", :foreign_key => "class_id" :as => 'interested_classes' 
    has_and_belongs_to_many :classes, :join_table => "contacts_current_classes", :foreign_key => "class_id" :as => 'current_classes' 
end 

Что я делаю неправильно?

ответ

0

я могу дать и ответ, но лучше прочитать этот пост Polymorphic Associations from rails guide

+0

Я прочитал это, но это не помогло с моей проблемой. Мне нужно создать другое поле в таблице соединений, которое связано с текущим или заинтересованным? –

+0

Прежде всего, вы не следуете никаким соглашениям. Постарайтесь следовать ему. Это действительно полезно. Нужно снова использовать правильное соглашение. Серьезно, я не даю ответу, потому что кто-то помог мне таким же образом. Читайте эту статью, которую я снова упоминал с нуля. –

+0

Спасибо за совет, я перечитал ее и нашел гораздо лучший способ сделать это! –