Active Record的元编程、测试与调试
元编程与审计对象查询
在处理数据变更时,会留下大量审计对象(Audit objects)的记录。例如,对一个 Cow 对象的每次更改,最多可能会创建三个审计对象。为了能获取相关的审计对象,我们可以使用单例方法模块 SingletonMethods 。
以下是创建审计对象表结构的代码:
t.column :column, :string
t.column :record_id, :integer
t.column :changed_from, :string
t.column :changed_to, :string
t.column :created_on, :datetime
end
同时,我们可以定义一个方法来查询审计对象:
module SingletonMethods
def revisions_for object
id = object.is_a?(ActiveRecord::Base) ? object.id : object
Audit.find(:all, :conditions => ["class_name = ? AND record_id = ?",
self.name, id])
end
end
这个 revisions_for 方法可以接受记录的ID或者对象本身作为参数
超级会员免费看
订阅专栏 解锁全文
8547

被折叠的 条评论
为什么被折叠?



