Es scheint keinen Namen für dieses allgemeine Modellmuster zu geben.Gibt es einen Namen für dieses allgemeine Ruby on Rails-Modellmuster? Polylink?
Es ist in vielen Plugins wie acts_as_taggable[_whatever]
verwendet und erlaubt es grundsätzlich
ein bestimmtes Modell verbindet, wie Tag, mit jedem anderen Modell ohne
immer mehr belongs_to Aussagen im Tag-Modell setzen zu müssen.
Es funktioniert, indem Sie Ihr Modell (Tag) mit einem polymorphen Join-Modell verknüpfen (Tagging)
die Join-Tabelle darstellt. Dies schafft ein in sich geschlossenes Modell, in dem sich alle anderen Modelle beziehen können.
(Sie beziehen sich über eine has_many
: als & ein has_many: durch)
ich oft als eine Sache, auf diese Art von Modell-Beziehung beziehen möchten.
Vielleicht nennen Sie es ein "Polylink-Modell" oder "Polylinked-Modell"?
Wie "Machen Sie es zu einem Polylink-Modell und beziehen Sie es beim Codieren auf andere Modelle."
Haben Sie noch weitere Vorschläge?
Hier ist die internen Abläufe für acts_as_taggable
Modelle:
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
Schauen Sie sich has_many_polymorphs http://blog.evanweaver.com/files/doc/fauna/has_many_polymorphs/files/README.html an –