Как я могу достичь следующего? У меня есть две модели (блоги и читателей) и JOIN таблица, которая позволит мне иметь N: M отношения между ними:Как избежать дубликатов в has_many: через отношения?
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
То, что я хочу сделать сейчас, это добавить читателей разных блогов. Условие, однако, состоит в том, что я могу добавить читателя в блог ONCE. Поэтому не должно быть никаких дубликатов (то же самое readerID
, то же самое blogID
) в таблице BlogsReaders
. Как я могу это достичь?
Второй вопрос: как мне получить список блога, на который читатели не подписались уже (например, чтобы заполнить выпадающий список выбора, который затем можно использовать для добавления читателя в другой блог) ?
Кроме того, я хотел бы упомянуть, что это, вероятно, лучший метод, так как принятый ответ выбирает ВСЕ данные из строки (например, the_reader.blogs), тогда как мой ответ выбирает только идентификаторы из строк (например, the_reader. blog_ids). Это большой успех! – 2008-11-25 15:20:10