Jak mogę osiągnąć następujące czynności? Mam dwa modele (blogi i czytelników) oraz tabeli łączącej, która pozwoli mi mieć N: M relacji między nimi:jak uniknąć duplikatów w relacji has_many: through?
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
co chcę teraz zrobić, to dodać czytelników do różnych blogów. Warunkiem jest jednak to, że mogę dodać czytelnika tylko do bloga RAZ. Więc nie może być żadnych duplikatów (ten sam readerID
, ten sam blogID
) w tabeli BlogsReaders
. Jak mogę to osiągnąć?
Drugie pytanie brzmi: jak uzyskać listę blogów, których już nie subskrybują czytelnicy (np. Wypełnić listę wyboru, którą można następnie wykorzystać do dodania czytelnika do innego bloga) ?
Chciałbym również wspomnieć, że jest to prawdopodobnie lepsza metoda, ponieważ zaakceptowana odpowiedź wybiera WSZYSTKIE dane z wiersza (ów) (np. The_reader.blogs), podczas gdy moja odpowiedź wybiera tylko identyfikatory z wierszy (np. The_reader. blog_ids). To jest hit wielkiej wydajności! –
jest to lepsze rozwiązanie i powinno być właściwą odpowiedzią. Dzięki Josh. –
thx Josh! Wygląda na szczuplejsze! – Sebastian