Ouverture de session

Commentaires récents

Syndication
Flux XML

Trouver un objet par tag, respectant une conditions sur une relation

Trouver un objet par tag, respectant une conditions sur une relation
Posté par jeremy.lecour le Lundi, 25 Février, 2008 - 11:43am. Installation | Développement

Bonjour,

Je travaille sur une appli dans laquelle j'ai un model Event et un modèle Person. Les personnes participent à un/des événements.

Dans ma vue de liste, j'ai une fonction de recherche et mon contrôleur fait ceci :

@event = Event.find(params[:event_id]
@people = @event.people.find(:all, :conditions => ["LOWER(nom) LIKE ? ","%#{@search_field}%"])

Jusque là ça marche nickel. Mais je coudrais rajouter la recherche parmi les tags des personnes.

Si je fais une recherche simple sur le model Person, c'est OK (mais j'ai toutes les personnes de la base), mais avec la relation sur Event (pour n'avoir que les personnes de tel événement), ça marche plus

OK : @people = Person.find_tagged_with(params[:s])
pas OK : @people = @event.people.find_tagged_with(params[:s])

Si besoin, je peux coller les requêtes SQL :
Mysql::Error: Champ 'people_tags.name' inconnu dans where clause: SELECT people.* FROM people INNER JOIN attendances ON people.id = attendances.person_id WHERE ((attendances.event_id = 2)) AND ((people_tags.name LIKE 'test'))

D'après ce que je peux en dire, c'est clairement un soucis de jointure dans le code, mais à part tout ré-écrite à la main (find_by_sql), j'arrive pas à corriger cette erreur



[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | sujet précédent | sujet suivant | envoyer par email ]

Nouveaux liens

Sondage
Lorsque je développe avec Ruby on Rails c'est principalement sous:
Linux
38%
Mac OS X
29%
Windows
31%
(Free|Open|Net) BSD
1%
Autre...
1%
Nombre de votes: 345

Qui est en ligne
Il y a actuellement 1 utilisateur et 29 invités en ligne.

railsfrance.org - communauté francophone des utilisateurs de Ruby on Rails
[ Hébergement et ressources techniques gracieusement fournis par la SSLL Nuxos Group ]