Лучшая практика: несколько категорий - лучший плагин для него (действует как taggable, действует как дерево, ...) - PullRequest
2 голосов
/ 21 июля 2009

Я пытаюсь найти лучшее решение:

У меня есть пользовательская модель, и пользователь должен иметь возможность сохранять ключевые слова (несколько контекстов), в которых он заинтересован.

F.E.

User-interessts:

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

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

и так далее ...

После того, как пользователь сохранит свой выбор, я хотел бы предложить следующие функции поиска:

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)

и я хотел бы иметь автоматически сгенерированное облако тегов (как обеспечивает act_as_taggable_on)

Кроме того, было бы здорово, если бы списки легко администрировались - например, теги нельзя использовать в качестве основной и подкатегорий (возможно, это работает с tag_contexts) ...?

Я пытался создать это с act_as_tree, но это не было ограничено. Затем я попробовал это с действиями как taggable, но я не понимаю, как я могу получить доступ к модели тегов (в папке с моими моделями нет файла tag.rb).

Вы можете мне помочь? У вас есть лучшее решение?

Спасибо

Ответы [ 2 ]

4 голосов
/ 11 ноября 2009

Это звучит почти так же, как то, что "действует как тег" на .

Из файла 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 голос
/ 04 января 2011

Стоит отметить, что вы всегда можете получить tag.rb, используя ниже.

<% ActsAsTaggableOn::Tag.example_method_on_class %>
...