最佳实践:多个类别 - 最佳插件(充当可标记,充当树,......)

时间:2009-07-21 14:25:51

标签: ruby-on-rails ruby rubygems ruby-on-rails-plugins

我正在努力寻找最佳解决方案:

我有一个用户模型,用户应该可以保存他感兴趣的关键字(多个上下文)。

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)

我希望有一个自动生成的标签 - 云(如acts_as_taggable_on提供)

除此之外,如果列表易于管理将会很酷 - 例如标签不能用作主要和子类别(也许这适用于tag_contexts)......?

我尝试使用acts_as_tree进行构建,但这并没有限制。然后我尝试使用可标记的行为,但我不明白,我如何访问标签模型(我的模型文件夹中没有tag.rb文件)。

你能帮帮我吗?你有更好的解决方案吗?

由于

2 个答案:

答案 0 :(得分:4)

这听起来几乎与"acts-as-taggable-on"提供的一样。

自述文件:

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 :(得分:1)

值得注意的是,您始终可以使用以下内容获取tag.rb。

<% ActsAsTaggableOn::Tag.example_method_on_class %>