代码之家  ›  专栏  ›  技术社区  ›  BvuRVKyUVlViVIc7

最佳实践:多个类别-它的最佳插件(作为可标记的,作为树…)

  •  2
  • BvuRVKyUVlViVIc7  · 技术社区  · 15 年前

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

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

    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)
    

    我希望有一个自动生成的标签云(就像提供的一样)

    除此之外,如果列表易于管理,那就很酷了-例如,标签不能用作主类别和子类别(可能这与标签上下文一起使用)…?

    我试着用行为树来建立,但这并不有限。然后我尝试将其作为可标记的,但我不知道如何访问标记模型(我的模型文件夹中没有tag.rb文件)。

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

    谢谢

    2 回复  |  直到 14 年前
        1
  •  4
  •   kristianp    15 年前

    听起来几乎和什么一模一样 "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) # => []
    
        2
  •  1
  •   karlfreeman    14 年前

    值得注意的是,您可以使用下面的方法获得tag.rb。

    <% ActsAsTaggableOn::Tag.example_method_on_class %>