Estoy usando la gema 'binarylogic-searchlogic' en la versión 2.3.5 junto con Rails 2.3.4.Rails: searchlogic search with o conditions
Lo que quiero hacer es realizar una búsqueda en un modelo para un valor específico sobre múltiples atributos. Puedo lograr esto a través de encadenar todo juntos como
User.first_name_or_last_name_or_email_like(value)
Pero con más y más atributos en esta búsqueda, esto tiende a ser feo. En su lugar me gustaría utilizar el mecanismo de búsqueda de searchlogic así:
search = User.search
search.first_name_like = value
search.last_name_like = value
..
@users = search.all
Así que esta es la manera de buscar a través de Y - pero lo que yo quiero es O. He encontrado dos formas de lograr esto, pero ninguno de los dos funciona.
primero uno: anteponer un or_ a la condición
search = User.search
search.first_name_like = value
search.or_last_name_like = value
@users = search.all
Esto me da The or_last_name_like is not a valid condition. You may only use conditions that map to a named scope
segundo uno: el uso search.any
search = User.search
search.first_name_like = value
search.last_name_like = value
@users = search.any
me da ninguna undefined method
' para `#.
¿Alguna idea sobre eso? ¿Estoy confundiendo el punto correcto del archivo Léame?
Gracias por su bienvenida ayuda!
edición: tiempo para un poco fea solución:
search = User.search
search.first_name_like = value
search.last_name_like = value
User.find(:all, :conditions => search.scope(:find).gsub('AND','OR'))
funciona, pero seguramente no es el camino a seguir, ¿verdad?
+1 Después de un rápido vistazo, estoy de acuerdo con esta respuesta. Para la confirmación, puede consultar la lista de correo de Searchlogic. –