1

我将 will_paginate 与博客文章和标签之间的 HABTM 关系一起使用。每当我应用分页时,都会显示重复的帖子,因为 Rails 中的 HABTM 不会保持数据库的唯一性,它会在进行查询时应用唯一性。

blog_posts.rb

has_and_belongs_to_many :tags, :uniq => true

标签.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 的问题。

4

1 回答 1

6

我想我以前遇到过这个问题。尝试将此添加到您的查询中:

.group("id")

这不是 will_paginate 中的错误,因为所做的只是获取它提供给您的数据并在视图中对其进行分页。解决方案在于您提供的数据。

于 2012-07-31T05:30:20.497 回答