Използвам will_paginate с връзка HABTM между публикации в блогове и етикети. Всеки път, когато прилагам страниране, получавам дублиращи се публикации, защото HABTM в Rails не поддържа базата данни уникална, тя прилага уникалността при извършване на заявката.
blog_posts.rb
has_and_belongs_to_many :tags, :uniq => true
tag.rb
has_and_belongs_to_many :blog_posts, :uniq => true
Съгласно документация за ActiveRecord, :uniq не предотвратява дублиращи се връзки се съхранява, той просто ги игнорира при изграждане на заявката.
Ето проблема: tag = Tag.find(1)
tag.blog_posts.count
е равно на 1, но: tag.blog_posts.page(nil).count
е равно на 3 и всичките 3 са дубликати на една и съща публикация. Правилното поведение трябва да бъде показване само на 1, без да се дублира.
Знам, че мога просто да копирам SQL заявките, които се генерират тук, и да го поправя по този начин, но това не изглежда добро решение. Може ли някой да ми помогне да поправя основния проблем? (въпреки че се притеснявам, че това е грешка в will_paginate)
Редактиране: Това изглежда е проблем и с Kaminari.