在PaperTrail中,我可以按" item_type"过滤事件。有没有办法获得所有不同的项目类型?文档中没有任何内容。
答案 0 :(得分:0)
跟进你的问题,我认为检索项目类型最简单的方法就是查看哪些模型有has_paper_trail
调用,但是,这不适用于多态模型(User - Student - Instructor)。但是,你问了一个不同的表来存储项目类型,也许你可以添加它。你可以用这种方式覆盖PaperTrail :: Version模型:
module PaperTrail
class Version < ActiveRecord::Base #(rails <= 4.x)
after_commit :add_item_type
def add_item_type
item_type_object
= VersionItemType.where(item_type: self.item_type).first ||
VersionItemType.new(item_type: self.item_type)
item_type.save
end
现在,您需要VersionItemType
的模型类和迁移:
create_table :version_item_types do |t|
t.string :item_type
t.timestamps
end
class VersionItemType < ActiveRecord::Base #(rails <= 4.x)
validates :item_type, presence: true
end
所以,在paper_trail存储每个版本之后,它会在新表中添加一个唯一的item_item
编辑:如果你这样做,你将不得不创建一个rake任务或者用存储的item_types来填充表格