Ich habe eine polymorphe Zuordnung in meiner Anwendung, und ich möchte in der Lage sein, die Anzahl der Benutzer in einer Gruppe zu zählen und die Benutzer in jeder Gruppe aufzulisten. Wie kann ich das erreichen?Rails Anzahl der Datensätze in polymorphe Zuordnung
class Group < ApplicationRecord
has_many :user_groups
has_many :users, through: :user_groups
end
class User < ApplicationRecord
has_many :user_groups
has_many :groups, through: :user_groups
end
class UserGroup < ApplicationRecord
belongs_to :user
belongs_to :group
end
ich im Moment kann ich User.first.groups
nennen aber ich nicht in der Lage bin User.groups.all
und User.all.groups
aber keines dieser Arbeit zu nennen.
Was wäre das, wenn nicht eine polymorphe Vereinigung genannt werden? Deine Lösung hat für mich funktioniert. Ich nehme an, ich überlegte. –
Dies ist eine Viele-zu-Viele-Beziehung. Polymorph ist - ein Modell kann effektiv zu mehreren anderen Modellen gehören. Beispiel - Bild kann zu Benutzer oder Dokument gehören. Man könnte also eine Schicht namens 'bebilderbar' im Bild haben, die den Polymorphismus für 'Benutzer' und 'Dokument' darstellt. – kiddorails
Um ein wenig genauer zu sein, mit einer polymorphen Assoziation wie besprochen, kann ein Bildobjekt nur zu einem anderen Objekt gehören. Aber dieses Objekt kann von irgendeiner "Klasse" sein. Wie Sie sagen, zum Beispiel eine Instanz von 'User' oder' Document'. Mit 'gehört_zu: bebilderbar, polymorph: wahr',' bebilderbar' und 'bebilderbar =' sind Methoden, die auf dem 'image' Objekt verfügbar sind, die das Holen/Setzen ermöglichen - was du vielleicht mit 'einer Ebene' meinst. – jvillian