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
Regardez has_many_polymorphs http://blog.evanweaver.com/files/doc/fauna/has_many_polymorphs/files/README.html –