0

J'essaie d'associer des contacts à des classes, mais sous deux types différents. Current_classes et Intested_classes.Association de modèles avec polymorphes

Je sais que je dois activer polymorphique mais je ne suis pas sûr de l'endroit où il doit être activé.

C'est ce que j'ai au moment

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 

Et puis à l'intérieur de mes contacts Model Je veux avoir quelque chose comme ça.

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 

Qu'est-ce que je fais mal?

Répondre

0

je peux donner u la réponse, mais mieux vous lire ce post Polymorphic Associations from rails guide

+0

Je l'ai lu cela, mais il n'a pas aidé à mon problème. Ai-je besoin de créer un autre champ dans la table de jointure qui soit lié à courant ou intéressé? –

+0

Tout d'abord, vous ne suivez aucune convention. Essayez de le suivre. C'est vraiment utile.Oui encore en utilisant la convention appropriée. Sérieusement je ne te donne pas de réponse parce que quelqu'un m'a aidé de la même manière. Lisez cet article dont j'ai parlé de zéro –

+0

Merci pour le conseil, je l'ai relu et j'ai trouvé une bien meilleure façon de le faire! –