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. Les
personnes sont tagguées avec le plugin “acts_as_taggable_on_steroids”
(quel nom !)
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
–
Jérémy Lecour : mailto:[email protected]
webdesigner, webmaster et développeur web
Provence Linux User Group : http://www.plugfr.org/