Active Object – 基于Ruby的对象-key/value映射
Active Object是用来访问LightCloud/TokyoCabinet/TokyoTyrant的工具,实现了持久化数据与对象的映射。
主要特性
-
自定义持久化属性.
class User < ActiveObject::Base attribute :name,:email end
-
建立对象引用,消除冗余.
class User < ActiveObject::Base attribute :name,:email
has_one :icon #=> 表示每个人有一张肖像 has_many :friends #=> 表示每个人可以有多个朋友 end
class Icon < ActiveObject::Base attribute :content end
class Friend < ActiveObject::Base attribute :friend_name,:remark,:created_at has_one :user end
-
可以对对象应用验证规则,而且对新对象或存在的对象应用不同的验证规则.
class User < ActiveObject::Base attribute :name,:email
validates_presence_of :name,:email end
-
回调.
class User < ActiveObject::Base before_destroy do |object| puts object end end
-
观察器.
class UserObserver < ActiveObject::Observer def after_create(user) puts user end end
-
多级继承
class User < ActiveObject::Base;end class Account < User;end
示例
在Rails中应用Active Object
在环境文件的最后加入下列代码(假设LightCloud配置文件与环境文件在同一个目录下):
require ‘activeobject’ ActiveObject::Base.configure :LC,File.join(File.dirname(__FILE__),‘light_cloud.yml’)
在项目中使用观察器
在环境文件的最后加入下列代码: ActiveObject::Base.observers = :account_observer ActiveObject::Base.instantiate_observers