J'utilise la gemme 'binarylogic-searchlogic' dans la version 2.3.5 avec Rails 2.3.4.Rails: searchlogic recherche avec ou conditions
Ce que je veux faire est d'effectuer une recherche sur un modèle pour une valeur spécifiée sur plusieurs attributs. Je y arrive en enchaînant tout ensemble comme
User.first_name_or_last_name_or_email_like(value)
Mais avec de plus en plus d'attributs dans cette recherche cela tend à être laid. Au lieu de cela, je voudrais utiliser le mécanisme de recherche de searchlogic comme ceci:
search = User.search
search.first_name_like = value
search.last_name_like = value
..
@users = search.all
C'est donc le chemin de recherche par ET - mais ce que je veux est OR. J'ai trouvé deux façons d'y parvenir, mais les deux ne fonctionnent pas.
1er un: un PREPEND or_ à la condition
search = User.search
search.first_name_like = value
search.or_last_name_like = value
@users = search.all
Cela me donne The or_last_name_like is not a valid condition. You may only use conditions that map to a named scope
2ème: utiliser search.any
search = User.search
search.first_name_like = value
search.last_name_like = value
@users = search.any
me donne undefined method
tout » pour #`.
Une idée est là-dessus? Suis-je le bon point du readme?
Merci pour votre aide très bienvenue!
modifier: temps pour une solution de contournement laid:
search = User.search
search.first_name_like = value
search.last_name_like = value
User.find(:all, :conditions => search.scope(:find).gsub('AND','OR'))
Works mais sûrement pas la voie à suivre, est-ce pas?
+1 Après un coup d'œil, je suis d'accord avec cette réponse. Pour confirmation, vous pouvez demander à la liste de diffusion de Searchlogic. –