Aus irgendeinem Grund ist der Quelltyp für eine polymorphe has_many :through
Assoziation immer 0, obwohl ein :source_type
festgelegt wurde.
So sehen meine Models aus ...
Foo:
%Vor%Leiste:
%Vor%TaggedItem:
%Vor%Stichwort:
%Vor% Soweit ich feststellen kann, ist das ein sehr gutes Setup, und ich kann Tags erstellen / hinzufügen, aber das taggable_type
endet immer mit 0.
Irgendeine Idee warum? Google hat nichts aufgedeckt.
Ich habe das selbst herausgefunden, nur weil ich sicher bin, dass ich nicht die erste oder letzte Person bin, die diesen dummen Fehler gemacht hat (tatsächlich habe ich es vielleicht schon vorher getan). Ich habe den Spaltentyp in das Feld taggable_type als Ganzzahl anstelle einer Zeichenfolge eingefügt.
Sie denken, dass dies einen Fehler verursachen könnte, tut es aber nicht. Es funktioniert einfach nicht.
Ein funktionierendes Beispiel mit Tests für die Modelle in der Frage findet sich hier .
Der Grund, warum es bei der Frage nicht funktionierte, ist die Migration db/migrate/[timestamp]_create_tagged_items
sollte folgendermaßen erzeugt werden:
Beachten Sie, dass t.references :taggable, polymorphic:true
zwei Spalten in schema.rb
erzeugt:
Also, mit den gleichen Modellen in der Frage und dieser Migration, bestehen die folgenden Tests:
%Vor% Hinweis: Rails 3 hat ein aktives Problem bezüglich has_many :through
und polymorpher Assoziationen, wie hier hier dargestellt. In Rails 4 ist dies jedoch gelöst.
PS: Da ich etwas zu dieser Frage recherchiert habe, könnte ich die Antwort auch posten, falls jemand davon profitieren könnte ...:)
Tags und Links ruby-on-rails ruby-on-rails-4 polymorphic-associations has-many-through