每天一剂Rails良药之Versioning Your ActiveRecord Models

Wiki有一个功能就是Undo,我们来看看Rails的acts_as_versioned插件

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


2,例子
class Chapter < ActiveRecord::Base
  acts_as_versioned
end

class AddChapterAndVersionTables < ActiveRecord::Migration
  def self.up
    create_table :chapters do |t|
      t.column :title,   :string
      t.column :body,    :text
      t.column :version, :integer
    end
    Chapter.create_versioned_table
  end

  def self.down
    drop_table :chapters
    Chapter.drop_versioned_table
  end
end

Chapter.create_versioned_table会为我们自动生成chapter_versions表,该表和chapter是多对一的关系
这样每次修改chapter对象都会生成一个新的version
回退到某一个版本:
chapter.revert_to(version_number)

得到总版本数:
chapter.versions(true).size

具体还有哪些方法看看源码acts_as_versioned.rb即可

你可能感兴趣的:(Ruby,UP,ActiveRecord,Rails)