乐者为王

Do one thing, and do it well.

用Rails 2.3打造简单记账应用(12)

在这以前我们把tags作为Entry模型的一个字段来实现,这样做有很大的局限性,而且还有好多插件可以实现这个功能,现在我们就来把它替换用插件acts_as_taggable_on_steroids实现。

安装插件

1
2
3
script/plugin install git://github.com/jviney/acts_as_taggable_on_steroids.git
script/generate acts_as_taggable_migration
rake db:migrate

在Entry模型中添加一句代码:

1
2
class Entry < ActiveRecord::Base
  acts_as_taggable

还要将所有视图中原来的tags字段替换成tag_list字段。

1
2
# index.html.erb
<%=h entry.tag_list %>
1
2
# edit.html.erb
<%= f.text_field :tag_list %>
1
2
# new.html.erb
<%= f.text_field :tag_list %>

还要将Entry模型中的验证字段tags改成tag_list。做完这些插件也就安装完成了。

既然用了插件,那么原来的tags字段就不需要了,写个迁移任务把它处理掉吧!

1
script/generate migration remove_tags_from_entries

迁移代码如下:

1
2
3
4
5
6
7
8
9
class RemoveTagsFromEntries < ActiveRecord::Migration
  def self.up
    remove_column :entries, :tags
  end

  def self.down
    add_column :entries, :tags, :string
  end
end

代码下载:https://github.com/dohkoos/qianbao

Comments