2012-11-29 4 views
0

J'ai un travail qui has_many catégories J'ai une entreprise qui has_many catégories.Correspondance has_many association sur deux modèles

Actuellement, j'attribue seulement une catégorie à la fois au travail et à une entreprise, mais cela changera plus tard, c'est pourquoi j'ai créé l'association has_many.

Les catégories attribuées aux entreprises et aux travaux proviennent du même tableau de catégories sélectionné avec un menu de sélection dans l'intention de les faire correspondre.

Si vous avez un travail, comment puis-je trouver des entreprises correspondant à la catégorie d'emplois.

Par exemple job = Job.find(1)

> job.categories.first.name 
=> "programmer" 

Si je veux trouver toutes les entreprises cotées qui ont la catégorie programmer comment puis-je faire cela?

Je pense que je pourrais avoir besoin d'une jointure ou d'une inclusion similaire mais je ne suis pas sûr de savoir comment cela devrait être écrit exactement.

Business.includes(:categories).where(:categories == ...)

Répondre

1

Votre code est presque droite. Cela devrait fonctionner:

Business.joins(:categories).where(categories: {name: 'programmer'}) 

Ou si vous avez plusieurs catégories:

Business.joins(:categories).where(categories: {name: ['programmer', 'other']}) 
+0

Merci pour votre aide. Cela a fonctionné très bien! –

Questions connexes