Ruby on rails Rails/PaperTrail:批准编辑
在我正在开发的应用程序中,我们使用PaperTrail不仅可以跟踪原始用户所做的更改,还可以跟踪对具有“参与者”角色的用户所做的更改,该用户有权更改授权的配置文件Ruby on rails Rails/PaperTrail:批准编辑,ruby-on-rails,versioning,paper-trail-gem,Ruby On Rails,Versioning,Paper Trail Gem,在我正在开发的应用程序中,我们使用PaperTrail不仅可以跟踪原始用户所做的更改,还可以跟踪对具有“参与者”角色的用户所做的更改,该用户有权更改授权的配置文件 有一点我不能总结,那就是不允许未经批准的纸质版本不显示为“实时”。我们将在一个仪表板区域中构建,配置文件所有者将在其中批准编辑。只是需要一些指导。谢谢 我将使用两个不同的类:一个用于保存已批准的实时用户,另一个用于保存已提交的未批准用户。让我们称他们为User和PendingUser 您可以让PendingUser从User继承所有内
有一点我不能总结,那就是不允许未经批准的纸质版本不显示为“实时”。我们将在一个仪表板区域中构建,配置文件所有者将在其中批准编辑。只是需要一些指导。谢谢 我将使用两个不同的类:一个用于保存已批准的实时用户,另一个用于保存已提交的未批准用户。让我们称他们为
User
和PendingUser
您可以让PendingUser
从User
继承所有内容,只需覆盖表的名称即可。或者,更好的情况是,两者都可以有一个从中继承的公共类,例如,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
类BaseUser
#以前在用户类中的所有内容
结束
类用户
现在有两种设置书面记录的方法,这将导致两种不同的方法:
默认方式-PaperTrail使用版本
模型存储所有内容。这意味着User
和PendingUser
都将在此处序列化,因此无需更改任何内容
专用类和表:PaperTrail versions用户作为用户版本
,这意味着您需要提供一个PendingServerVersion
类和表(非常简单,只需从用户版本
继承所有内容,从表名
)
到目前为止还不错。如果允许您的贡献者查看由其他贡献者创建的挂起用户,那么您就基本完成了-您只需要编写批准机制的逻辑:基本上,您将PendingUser
的实时版本的属性复制到用户的实时版本中(当然,除了PendingUser#user_id
之外)。在批准更改后,您可能希望删除PendingUser
和PendingUser
版本,或者选择所有这些版本并将其类更改为user
(将未批准的版本与已批准的版本合并)
如果您的贡献者被禁止查看其他待处理的贡献,那么您将拥有一个用户与多个待处理者的关系。这可能会变得更复杂,因为您需要考虑在批准一个用户后,其他贡献者如何处理所有其他待处理者将引用过时的用户版本
祝你好运
编辑:将用户引用添加到PendingUser