小编Jor*_*aff的帖子

Rails:使用带复杂关联的will_paginate查找

我在进行复杂的查找时遇到了will_paginate的问题.

:photo  has_many   :tags,   :through => :tagships
:item   has_many   :photos
:photo  belongs_to :item


@photos = @item.photos.paginate :page => params[:page],
                                :per_page => 200,
                                :conditions => [ 'tags.id IN (?)', tag_ids],
                                :order => 'created_at DESC',
                                :joins => :tags,
                                :group => "photos.id HAVING COUNT(DISTINCT tags.id) = #{tag_count}"
Run Code Online (Sandbox Code Playgroud)

我想获取tag_ids数组中包含所有标签的所有照片.MySQL的IN通常会进行"或"搜索,但我需要"和".我发现如何修改模仿"和"行为在这里,它使用model.find时(正常工作),只要也可以作为记录的数量获取比我低:per_page计数.但是如果它必须分页,生成的SQL类似于:

SELECT count(*) AS count_all, photos.id HAVING COUNT(DISTINCT tags.id) = 1 AS photos_id_having_count_distinct_tags_id_1 FROM `photos`(...)
Run Code Online (Sandbox Code Playgroud)

这不起作用.其他人已经看到了这个错误,并且能够将他们的count()从查询中移出,但我不认为在我的情况下这是可能的.

有没有更好的方法来执行可能与will_paginate一起使用的搜索?如果它是唯一的方法,我想我应该看看另一个分页插件?

谢谢!

activerecord ruby-on-rails will-paginate

5
推荐指数
1
解决办法
4569
查看次数