블로그 게시물과 태그 사이에 HABTM 관계로 will_paginate를 사용하고 있습니다. 페이지 매김을 적용 할 때마다 레일스의 HABTM이 데이터베이스를 고유하게 유지하지 않기 때문에 중복 된 게시물이 표시되고 쿼리를 만들 때 고유성이 적용됩니다.레일은 HABTM 모델의 중복 된 페이지를 표시합니다
blog_posts.rb
has_and_belongs_to_many :tags, :uniq => true
tag.rb 액티브 대한 documentation 당
has_and_belongs_to_many :blog_posts, :uniq => true
는 : 빌드 할 때 중복 관계를 방해하지 않는 UNIQ가 저장되고, 그것은 단지 그들을 무시 쿼리. 여기
이 문제입니다 :tag = Tag.find(1)
tag.blog_posts.count
1과 동일하지만, :
tag.blog_posts.page(nil).count
3에 해당하고, 3은 동일한 게시물의 중복입니다. 올바른 동작은 복제되지 않고 1을 표시하는 것입니다.
여기 생성 된 SQL 쿼리를 복사하여 그 방법으로 고칠 수는 있지만 좋은 해결책은 아닌 것 같습니다. 누군가가 근본적인 문제를 해결하도록 도울 수 있습니까? (비록 내가 will_paginate의 버그라고 염려하지만)
편집 : 이것은 Kaminari의 문제인 것 같습니다.
이것은 작동합니다! 하지만 나는 그것이 버그라고 생각한다. will_paginate는 ActiveRecord의 사양을 무시합니다. 정상적인 ActiveRecord SQL 쿼리를 변경하기 때문에 will_paginate없이 작동하지만 정상적으로 작동하지 않으므로 작동하지 않게해야합니다. 솔루션을 가져 주셔서 감사합니다. – John
예 Ultimation - 이것은 버그 또는 적어도 will_paginate의 개선으로 간주 될 수 있음에 동의합니다. – Brett