0

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 

Antwort

2

In Rails Jargon ich dies in der Regel als Ebene bezeichnet gesehen habe "has_many :through". Mit dem Polymorphismus "polymorph has_many :through". Wenn ich den Rails-Jargon daraus schließe, könnte das allgemeine Muster als eine "polymorphe Viele-zu-Viele-Beziehung" bezeichnet werden.

+0

Schauen Sie sich has_many_polymorphs http://blog.evanweaver.com/files/doc/fauna/has_many_polymorphs/files/README.html an –

Verwandte Themen