2009-03-17 9 views
3

Comment écrire une instruction de condition dans la méthode find ou paginate pour permettre aux utilisateurs de rechercher dans les noms Project et Project Category simultanément?Rails: Recherche de plusieurs tables à partir d'une requête

Maintenant mon code ressemble à ceci

@projects = Project.paginate :per_page => 20, :page => params[:page], :conditions => ['name LIKE ?', "%#{params[:search]}%"] 

donc j'ai aussi Category table avec name champ. Comment puis-je combiner ces deux name dans cette requête de recherche?

Répondre

8

En supposant que votre modèle Projecthas_many :categories:

@projects = Project.paginate :per_page => 20, :page => params[:page], :joins => :categories, :conditions => ['projects.name LIKE ? OR categories.name LIKE ?', "%#{params[:search]}%", "%#{params[:search]}%"], :order => 'projects.id DESC'

Modifier le :order ci-dessus si/au besoin.

0

je ferais:

@categories = Category.find :conditions => ["name like ?", "%#{params[:search]}%"] 

Concaténer @projects et @categories, puis utilisez le résultat comme la liste des résultats de recherche finale.

Questions connexes