ruby-on-rails – Rails / PaperTrail:批准编辑
在我正在开发的应用程序中,我们使用PaperTrail不仅可以跟上原始用户所做的更改,还可以了解对具有“贡献者”角色的用户所做的更改,该用户可以访问授权配置文件.
我不能放在一起的一件作品是不允许未经批准的paper_trail版本不显示为“live”.我们将在仪表板区域构建,配置文件所有者将批准编辑.只是需要一些指导.谢谢! 解决方法
我会使用两个不同的类:一个用于保存实时的,已批准的用户,另一个用于保存已提交的未经批准的用户.我们称他们为User和PendingUser.
您可以让PendingUser从User继承所有内容,只是覆盖table_name.或者,事件更好,两者都可以有一个他们继承的共同类 – 例如BaseUser(或共同关注的问题).您还需要对原始用户(PendingUser#user_id)的引用,以便了解更改属于谁.因此,您需要为pending_users表编写迁移,如下所示: class BaseUser # Everything that used to be within your User class end class User < BaseUser self.table_name = 'users' has_one :pending_user # Or has_many,see the last paragraph end class PendingUser < BaseUser self.table_name = 'pending_users' belongs_to :user end 现在有两种设置PaperTrail的方法,这将导致两种不同的方法: >默认方式 – PaperTrail使用版本模型存储所有内容.这意味着User和PendingUser都将在此处序列化,因此无需进行任何更改 到现在为止还挺好.如果你的贡献者被允许看到由其他贡献者创建的待定用户,那么你已经完成了 – 你只想编写批准机制的逻辑:基本上你将PendingUser的实时版本的属性复制到用户的实时版本(当然除了PendingUser#user_id).批准更改后,您可能希望删除PendingUser和PendingUser版本,或者选取所有这些版本并将其类更改为User(将未批准的版本与已批准的版本合并). 如果您的贡献者不允许看到彼此待定的贡献,那么您将拥有一个用户有许多PendingUsers关系.它可能会变得有点复杂,因为您需要考虑在批准用户之后,其他贡献者制作的所有其他PendingUsers将如何引用过时的用户版本. 祝好运! 编辑:添加了对PendingUser的用户引用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |