Je voudrais énumérer tous les messages liés à une catégorie et de classe spécifiques.
J'ai: p> et je veux faire quelque chose comme ça p> C'est en effet une tâche très simple, mais je ne sais pas ce que je devrais rechercher (mots-clés). p> C'est le même problème comme Ce , mais dans les rails. P> EDIT STRUT>:
J'ai ajouté plus de détails à la question.
Cela fonctionne, mais seulement si j'ai les deux paramètres spécifiés. Sorcière n'est pas toujours le cas - je ne sais pas quels paramètres seraient spécifiés. P>
4 Réponses :
Category.find(params[:category_id]).posts Also take a look at the guides: Guides for Rails 2.35 Guides for Rails 3.0
Cela fonctionne, merci. Mais que se passe-t-il si j'avais une association de plus à plusieurs (disons de classe) à ce poste et je veux trouver les deux par catégorie et par classe? Quelque chose comme post.where (["catégorie.id =? And classroom.id =?", Parames [: catégorie_id], paramètres [: classroom_id]]]
Que diriez-vous: POST.Où (["catégorie_id =?", Parames [: catégorie_id]). Où (["classroom_id =?", Parames [: classroom_id]]]
@chap je n'ai pas ces champs dans la table postale. C'est pourquoi je demande. Veuillez lire la question.
Votre réponse ne fera qu'aider à trouver un poste qui appartient à une certaine catégorie et ne le filtrera pas également par une classe.
sonne comme si vous avez besoin d'une instruction IF.
if params[:category_id] && params[:classroom_id] Post.joins(:categories, :classrooms).where("classrooms.id" => params[:classroom_id], "categories.id" => params[:category_id]]) elsif params[:category_id] Category.find(params[:category_id]).posts else Classroom.find(params[:classroom_id]).posts end
Je pense que cela devrait fonctionner:
SELECT p.* FROM posts AS p INNER JOIN category_posts AS cap ON cap.id = p.category_posts_id INNER JOIN classroom_posts AS clp ON clpid = p.classroom_posts_id WHERE cap.category_id = '1' AND clp.classroom_id = '1' ;
Voici ce que je ferais dans les rails 3:
dans Je ne joint pas MAINTENANT, vous pouvez faire: P> post.rb code>: p>
Salle de classe code> ou
catégorie code> car il fait plus de travail pour le SGMS et ce n'est pas nécessaire. P>
Post.in_category(params[:category_id]).in_classroom(params[:classroom_id])