2009-07-21 4 views
2

Je suis en train de trouver la meilleure solution:Les meilleures pratiques: Plusieurs catégories - meilleur plugin pour elle (agit comme tagable, agit comme arbre, ...)

J'ai un userModel et l'utilisateur doit être en mesure sauvegarder les mots-clés (contextes multiples) qui l'intéressent.

F.e.

User-interessts: 

Sports: Checkbox(CB) fishing, CB Skyying, CB Tennis, CB Soccer 

Music: CB Metal, CB Techno, CB Folk, CB Charts, ... 

et ainsi de suite ...

Après que l'utilisateur enregistre sa sélection, je voudrais proposer la recherche suivante fonctionnalité:

find by main category(input: sports, music,....) 

find by keyword (input: sports, music, metal, fishing,....) 

find by most viewed (show data with the most associated users) 

et je voudrais avoir un généré automatiquement tag-cloud (comme acts_as_taggable_on fournit)

De plus, il serait cool si les listes étaient faciles à administrer - Tags par exemple ne peuvent pas être utilisés comme main et sous-catégories (peut-être s fonctionne avec tag_contexts) ...?

J'ai essayé cela pour construire avec acts_as_tree, mais ce n'était pas limité. Ensuite, je l'ai essayé avec des actes comme taggable, mais je ne comprends pas, comment je peux accéder au modèle de balises (il n'y a pas de fichier tag.rb dans mon dossier de modèles).

Pouvez-vous m'aider? Avez-vous une meilleure solution?

Merci

+0

Le fichier tag.rb se trouverait avec les fichiers du plugin. Ça fait longtemps que j'ai travaillé avec des rails, donc ça fait probablement partie du noyau de rails maintenant, mais c'était auparavant dans vendor/plugin/acts_as_taggable/model ou quelque chose de proche. – mveerman

+0

Hm ... Mais comment puis-je étendre cette classe? – Lichtamberg

Répondre

4

qui sonne presque exactement comme ce que "acts-as-taggable-on" fournit.

De l'readme:

 
class User < ActiveRecord::Base 
    acts_as_taggable_on :tags, :skills, :interests 
end 

@user = User.new(:name => "Bobby") 
@user.tag_list = "awesome, slick, hefty"  # this should be familiar 
@user.skill_list = "joking, clowning, boxing" # but you can do it for any context! 
@user.skill_list # => ["joking","clowning","boxing"] as TagList 
@user.save 

@user.tags # => [<Tag name:"awesome">,%lt;Tag name:"slick">,<Tag name:"hefty">] 
@user.skills # => [<Tag name:"joking">,<Tag name:"clowning">,<Tag name:"boxing">] 

# example finds: 
User.tagged_with("awesome", :on => :tags) # => [@user] 
User.tagged_with("awesome", :on => :skills) # => [] 
1

A noter que vous pouvez obtenir le tag.rb AllWays en utilisant le ci-dessous.

Questions connexes