Wie kann ich Folgendes erreichen? Ich habe zwei Modelle (Blogs und Leser) und eine Tabelle JOIN, die mir erlauben, einen N zu haben: M Beziehung zwischen ihnen:Wie vermeidet man Duplikate in einer has_many: through-Beziehung?
class Blog < ActiveRecord::Base
has_many :blogs_readers, :dependent => :destroy
has_many :readers, :through => :blogs_readers
end
class Reader < ActiveRecord::Base
has_many :blogs_readers, :dependent => :destroy
has_many :blogs, :through => :blogs_readers
end
class BlogsReaders < ActiveRecord::Base
belongs_to :blog
belongs_to :reader
end
Was ich jetzt tun möchte, ist Leser in den verschiedenen Blogs. Die Bedingung ist jedoch, dass ich nur einmal einen Leser zu einem Blog hinzufügen kann. Es darf also keine Duplikate (gleich readerID
, gleich blogID
) in der Tabelle BlogsReaders
geben. Wie kann ich das erreichen? Die zweite Frage ist, wie bekomme ich eine Liste von Blogs, die die Leser nicht bereits abonniert haben (zB um eine Drop-down-Auswahlliste zu füllen, die dann verwendet werden kann, um den Leser zu einem anderen Blog hinzuzufügen). ?
Ich möchte auch erwähnen, dass dies wahrscheinlich die bessere Methode ist, da die akzeptierte Antwort ALLE Daten aus den Zeilen (zB the_reader.blogs) auswählt, während meine Antwort nur die ids aus den Zeilen auswählt (zB the_reader). blog_ids). Das ist ein großer Leistungshit! –
Dies ist eine bessere Lösung und sollte die richtige Antwort sein. Danke, Josh. –
thx Josh! Sieht in der Tat schlanker aus! – Sebastian