Tengo un problema con will_paginate mientras realizo un descubrimiento complejo.Rieles: el uso de will_paginate con una asociación compleja encuentra
: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}"
Quiero buscar todas las fotos que tienen todas las etiquetas en la matriz de etiquetas_de_tareas. La IN de MySQL generalmente hace "o" búsquedas, pero necesito "y". Encontré cómo modificar IN para imitar "y" el comportamiento here y funciona bien cuando se usa model.find(), también funciona siempre que el número de registros obtenidos sea menor que mi: recuento de páginas. Pero si tiene que paginar, el SQL que se genera es similar a:
SELECT count(*) AS count_all, photos.id HAVING COUNT(DISTINCT tags.id) = 1 AS photos_id_having_count_distinct_tags_id_1 FROM `photos`(...)
que no funciona. Otros han visto este error y han podido sacar su conteo() de la consulta, pero no creo que eso sea posible en mi caso.
¿Existe alguna forma mejor de hacer esta búsqueda que podría funcionar con will_paginate? Si es la única forma de hacerlo, creo que debería buscar otro plugin de paginación.
Gracias!