`
hideto
  • 浏览: 2666680 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

每天一剂Rails良药之Tagging

    博客分类:
  • Ruby
阅读更多
“social networking”产生了一个东西叫“tagging”,而DHH为Rails写了一个acts_as_taggable插件,简化了Rails开发tagging功能
acts_as_taggable依赖于Rails的polymorphic associations feature,允许对任何model进行tag

1,安装插件
ruby script/plugin install legacy


2,建立数据库表
由于model和tag是Many-to-Many的关系,我们需要建立如下migration
class AddDatabaseStructureForTagging < ActiveRecord::Migration
  def self.up
    create_table :tags do |t|
      t.column :name, :string
    end
    create_table :taggings do |t|
      t.column :taggable_id, :integer
      t.column :tag_id, :integer
      t.column :taggable_type, :string
    end
  end

  def self.down
    drop_table :tags
    drop_table :taggings
  end

其中taggings表为关系表,为model(taggable)和tag建立多对多关联

3,例子
class Contact < ActiveRecord::Base
  acts_as_taggable
end

在model类定义里加上acts_as_taggable即可让该model具有tagging的功能

class ContactsController < ApplicationController
  def list
    @contacts = if tag_name = params[:id]
      Tag.find_by_name(tag_name).tagged
    else
      Contact.find(:all)
  end

  def tag
    contact = Contact.find(params[:id])
    contact.tag_with(params[:tag_list])
    contact.save
  end
end

Tag.find_by_name(tag_name).tagged即可得到name为tag_name的Tag的contacts(如果对多个model进行tagging,可能要对taggings表的taggable_type进行查询)
contact.tag_with(params[:tag_list])则用以空格分隔的tag名列表来对该contact对象进行tagging,如果tags表没有某tag,则new一个该tag
分享到:
评论
4 楼 vwangzhen 2008-08-14  
已经解决了
可能是版本的问题,
这是另一更好的插件
http://software.pmade.com/tagging/pages/show/Quick+Start
3 楼 vwangzhen 2008-08-13  
我做的时候不知是插件没安好还是哪里需要配,
加上  acts_as_taggable 这句话 后 总是报这个错
The :dependent option expects either :destroy, :delete_all, or :nullify (true)

不知楼主是否有demo 如果有可否共享下,本人将感知不尽

1 楼 vwangzhen 2008-08-12  
写的很好,我刚好也在做,能不能工巧匠有往后过多说一点说的稍微全点

相关推荐

    Rails 101 入门电子书

    《Rails 101 入门电子书》是一本非常适合初学者直接入门的书籍,它由xdite编写并出版于2014年6月10日。本书主要针对的是希望学习Ruby on Rails框架的读者,特别是那些想要从零开始掌握这项技术的新手。 #### 二、...

    Ruby-ActsAsTaggableOnRails应用程序标签插件允许自定义标签在动态环境中

    Ruby-ActsAsTaggableOn 是一个非常流行的Rails插件,用于在动态环境中实现自定义标签功能。这个插件使得在你的Rails应用中添加标签系统变得简单高效,它提供了灵活的接口来管理和操作标签数据。 首先,让我们深入...

    Rails之道.pdf(最新版)

    《Rails之道》详细讨论了Rails的程序代码并通过分析Rails中的代码片段来深入解释它的功能,同时,《Rails之道》部分章节也摘录了一些API文档中的内容,使读者能够快速地找到对应的API文档、相关的示例代码以及深入的...

    Rails项目源代码

    Ruby on Rails,通常简称为Rails,是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式。这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何...

    关于rails 3.1 cucumber-rails 1.2.0

    首先,Rails 3.1是Ruby on Rails框架的一个版本,它在2011年发布。这个版本引入了一些显著的改进,如Asset Pipeline(资产管道)和CoffeeScript支持。Asset Pipeline允许开发者更有效地管理和优化应用程序的前端资源...

    rails2-sample

    MVC是Rails的核心架构之一,这一章节将详细介绍这三个组件的作用和相互关系。模型负责与数据库交互,管理数据;视图用于展示数据给用户;控制器则处理用户请求,协调模型和视图之间的操作。了解并正确运用MVC模式是...

    Rails之道.pdf 高清 带书签

    Rails之道.pdf 高清 带书签

    rails 2.3.2离线安装rails 2.3.2离线安装

    rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails ...

    Rails

    标题 "Rails" 指的是 Ruby on Rails,一个开源的Web应用程序框架,它基于Ruby编程语言,遵循MVC(模型-视图-控制器)架构模式。Rails由David Heinemeier Hansson在2004年创建,其设计理念是强调代码的简洁性、DRY...

    Ruby-Rails实战之B2C商城开发

    在本项目"Ruby-Rails实战之B2C商城开发"中,我们将深入探索使用Ruby on Rails这一强大的Web开发框架来构建一个完整的B2C(Business-to-Consumer)在线商城。Rails是Ruby语言的一个核心框架,以其MVC(Model-View-...

    Rails入门教程一(翻译)

    - **Rails**:全称为Ruby on Rails,简称RoR或Rails,是一种用于快速开发Web应用的框架,基于Ruby语言,由David Heinemeier Hansson创建。Rails强调代码的简洁性与效率,采用MVC(Model-View-Controller)架构模式,...

    使用Aptana+Rails开发Rails Web应用(中文)

    Aptana是一款强大的集成开发环境(IDE),尤其适用于Rails项目的开发,它提供了丰富的特性来提升开发效率。本教程将详细介绍如何使用Aptana与Rails结合,创建一个功能完备的Web应用程序。 首先,我们需要安装Aptana...

    Web开发敏捷之道--应用Rails进行敏捷Web开发 之 Depot代码。

    标题中的“Web开发敏捷之道--应用Rails进行敏捷Web开发 之 Depot代码”表明这是一个关于使用Ruby on Rails框架进行敏捷Web开发的示例项目,名为Depot。Ruby on Rails(简称Rails)是一个开源的Web应用程序框架,它...

    rails指南 中文版

    Rails指南中文版是针对Ruby on Rails框架的一份详尽教程,旨在帮助开发者深入理解并熟练掌握这个强大的Web应用开发工具。Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-...

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    - **步骤**:通过命令行使用`rails new project_name`来初始化一个新的Rails项目。 - **结构**:新项目将包含默认的目录结构,如`app`、`config`、`db`等,分别用于存放应用程序代码、配置文件、数据库迁移脚本等。 ...

    web开发之rails最新调试通过购物车代码

    本压缩包中的"web开发之rails最新调试通过购物车代码"是关于使用Rails进行Web应用开发的一个实例,特别是针对购物车功能的实现。 购物车是电商网站的核心部分,它允许用户选择商品并保存这些选择以便后续购买。在...

    rails2.3.2

    Rails 作为 Ruby 的主要应用框架之一,两者密切相关。 在压缩包的文件名称列表中,只有一个条目 "rails",这可能意味着压缩包内包含了 Rails 框架的核心文件,如 gemspec 文件、库文件、初始化脚本等。开发者可以...

Global site tag (gtag.js) - Google Analytics