`
liuqiang
  • 浏览: 157990 次
  • 性别: Icon_minigender_1
  • 来自: 华东
社区版块
存档分类
最新评论

10分钟给一个rails遗留系统添加标签功能

    博客分类:
  • Ruby
阅读更多
   早些时候做过了一个rails系统,当时没有涉及到标签的功能,最近客户看到很多网站有标签功能,并认为一个web2.0网站没有标签怎么可以,于是提出要给群组、文章等等加上标签的功能,开始感觉蛮麻烦的,我岂不是要修改很多东西?我最初的设想是给每个用到标签的表加个tag字段,标签作为以逗号隔开的字符串形式存进去,取出来的时候再解析,可是按标签搜索的话岂不是巨麻烦?转念一想这个方法实在是憨,这时我发现了acts_as_taggable_on_steroids这个插件,它是根据acts_as_taggable重写的,试用了一下,非常不错,10分钟足以帮我解决标签问题,完全可以放心大胆的使用,特向大家推荐一下,以下是我简单的使用过程:

1 安装,ruby script/plugin install http://svn.viney.net.nz/things/rails/plugins/acts_as_taggable_on_steroids

2 给系统额外添2个表:tags和taggings,tags字段包括id、name,taggings字段包括id、tag_id、taggable_id、taggable_type、created_at。

3 在需要标签功能的model中定义:acts_as_taggable

4 添加标签,@xxx.tag_list = params[:tags],前端的tag用逗号隔开

4 显示标签, @tags = XXX.tag_counts[0,20],取出tag对象

5 按标签查询相关列表,@xxx = XXX.find_tagged_with(params[:name],:conditions=>相关额外的条件)

6 基本功能到此就搞定了,还有许多额外的功能,如Tag.counts:标签数量,删除标签:xxx.tag_list.remove("xxx")等等
分享到:
评论
2 楼 rainux 2008-08-05  
zzhxccw 写道
每个人的tag应该是不同的,@tags = XXX.tag_counts[0,20],不是把别人的tag标签也取出来了!


这只不过是你们的需求不一样而已。
1 楼 zzhxccw 2008-08-05  
每个人的tag应该是不同的,@tags = XXX.tag_counts[0,20],不是把别人的tag标签也取出来了!

相关推荐

Global site tag (gtag.js) - Google Analytics