2010-11-08 9 views
0

En ce moment, je ne dispose que d'une condition dans mon code Projects.paginate est inférieur2 Conditions Trouvez avec une variable

def list 
     @projects = Project.paginate(:page => params[:page], :per_page => 100, :order => (sort_column + ' ' + arrow), :conditions => ["description LIKE ?", "%#{query}%"]) 

Je veux mettre une autre condition ici, mais son se révèle être difficile. J'ai essayé

@projects = Project.paginate(:page => params[:page], :per_page => 100, :order => (sort_column + ' ' + arrow), :conditions => ["description OR name LIKE ?", "%#{query}%"]) 

mais j'obtiens une erreur de liaison du contrôleur SQL. Des idées? Je ne peux pas utiliser le signe = non plus.

+1

Je ne sais pas vraiment Rails, mais 'SELECT ... WHERE description ou nom LIKE '% foo%'' est pas SQL vraiment valide, ou au moins il ne ferait pas ce que vous pensez qu'il fait. Il doit être 'WHERE description LIKE '% foo%' OU nom 'LIKE'% foo% ''. – deceze

Répondre

1

Vous devez avoir deux variables de liaison dans vos conditions tableau:

qt = "%#{query}%" 
@projects = Project.paginate(:conditions => 
       ["description LIKE ? OR name LIKE ?", qt, qt], ..) 
+0

Ah. Assez étrange considérant à la fois qt et qt ont la même valeur. On pourrait penser que SQL serait capable de comprendre avec une seule variable. En tout cas merci! cela a résolu mon problème – TheRealVayne