0

Il semble n'y avoir aucun nom pour ce modèle de modèle commun.Y a-t-il un nom à ce modèle de modèle commun Ruby on Rails? Polylink?

Il est utilisé dans de nombreux plugins comme acts_as_taggable[_whatever] et il permet essentiellement
reliant un certain modèle, comme Tag, avec tout autre modèle sans avoir à mettre
toujours plus belongs_to énoncés dans le modèle Tag.

Cela fonctionne en ayant votre modèle (Tag) lié à un modèle de jointure polymorphe (marquage)
représentant la table de jointure. Cela crée un modèle autonome dans lequel n'importe quel autre modèle peut se rapporter.
(Ils concernent par une has_many: comme un & has_many: par)

Je veux souvent faire référence à ce type de relation de modèle comme une chose.
Peut-être l'appeler un «modèle polylink» ou «modèle polylinked»?
Tels que "Faites-en un modèle de polylink et reliez-le à d'autres modèles au fur et à mesure que vous codez".

D'autres suggestions?

est ici le fonctionnement interne pour acts_as_taggable modèles:

class Tag < ActiveRecord::Base 
    has_many :taggings 
end 

class Tagging < ActiveRecord::Base 
    belongs_to :tag 
    belongs_to :taggable, :polymorphic => true 
end 

class Whatever < ActiveRecord::Base 
    has_many :taggings, :as => :taggable, :dependent => :destroy 
    has_many :tags, :through => :taggings 
end 

class CreateTaggings < ActiveRecord::Migration 
    def self.up 
    create_table :taggings do |t| 
     t.references :tag 
     t.references :taggable, :polymorphic => true 
     t.timestamps 
    end 
    end 
end 

Répondre

2

Dans le jargon Rails je l'ai vu souvent appelé simplement « has_many :through ». Avec le polymorphisme, "polymorphe has_many :through". En prenant le jargon Rails, je suppose que le modèle général pourrait être appelé une «relation polymorphe de plusieurs à plusieurs».

+0

Regardez has_many_polymorphs http://blog.evanweaver.com/files/doc/fauna/has_many_polymorphs/files/README.html –