我在进行复杂的查找时遇到了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一起使用的搜索?如果它是唯一的方法,我想我应该看看另一个分页插件?
谢谢!