我正在使用will_paginate和博客文章和標籤之間的HABTM關係。無論何時應用分頁,我都會顯示重複的帖子,因爲Rails中的HABTM不會保持數據庫的唯一性,它會在查詢時應用唯一性。Rails will_paginate在HABTM模型上顯示重複信息
blog_posts.rb
has_and_belongs_to_many :tags, :uniq => true
tag.rb
has_and_belongs_to_many :blog_posts, :uniq => true
每documentation ActiveRecord的,:uniq的不會阻止重複關係被存儲,它只是建立時忽略它們查詢。
這裏是問題: tag = Tag.find(1)
tag.blog_posts.count
等於1,但: tag.blog_posts.page(nil).count
等於3,所有3是相同職位的副本。正確的行爲應該是隻顯示1,而不是重複。
我知道我可以複製正在生成的SQL查詢並修復它,但這似乎不是一個好的解決方案。有人能幫我解決潛在的問題嗎? (儘管我擔心它是will_paginate中的一個bug)
編輯:這似乎也是Kaminari的問題。
This Works!但我不同意,我認爲這是一個錯誤。 will_paginate忽略了ActiveRecord的規範。事情沒有will_paginate工作,他們不工作,因爲它改變了正常的ActiveRecord SQL查詢,你必須走出自己的方式來使事情工作。非常感謝解決方案! – John 2012-07-31 18:51:25
是的感謝Ultimation - 同意這可能被認爲是一個錯誤或至少改進了will_paginate – Brett 2016-07-30 08:31:14