作者:俊铭士弘政翰 | 来源:互联网 | 2023-05-27 10:47
我打算写一个简单的信用系统,用户可以在系统中" 添加 "," 扣除 "信用.目前我正在考虑两种方法.
简单一:将用户信用存储balance
在数据库中,并记录所有操作("添加","扣除"),但不用于计算最新余额.
基于历史:不要将余额存储在数据库中.通过查看交易历史来计算余额,例如("添加","扣除")
我认为这两种情况都有效,但我想看看在设计这样一个系统时是否有任何警告,特别是我赞成History based
系统.
或者,有没有我使用的参考实现或开源模块?
更新:或者是否有基于Ruby/Rail的模块,AuthLogic
所以我可以插入和播放我现有的代码而无需重新发明轮子(例如交易,回滚,安全等)?
1> joelparkerhe..:
绝对使用两者.
基于余额的方式使您可以快速访问当前金额.
基于历史的方式为您提供审计.历史表应该存储交易(如您所述),时间戳,交易发生前的余额,理想情况下是跟踪资金来源/目的地的方式.
请参阅Ruby Toolbox以获取簿记和Plutus复式簿记宝石.
此外,如果您的信用系统可能会影响用户,那么我建议您也使用日志记录,理想情况下请阅读安全日志验证和可证明的时间戳链接.
有关日志记录的详细信息,请参阅:确保事件日志文件可验证性的技术.
对于有信誉的开源代码,您可能需要查看:http://www.gnucash.org/
我曾经在一个处理小型金融服务公司的余额/会计的系统上工作,并且可以保证这个答案是100%正确的.
2> Joel Brown..:
添加和扣除信用意味着您可能还需要了解这些信用来自哪里以及它们去了哪里.每当你遇到这种情况时,无论是货币还是其他需要跟踪和计算的数量,你都应该考虑使用双重记账模式.
这种模式已经运行了几个世纪,并为您提供了所需的所有功能,以便能够看到您的余额以及它们如何成为这样:
审计所有交易的日志(包括"基金"的来源和汇点)
随着时间的推移,所有帐户的余额(如果您选择记录)
轻松验证记录的正确性
能够"一次写入" - 没有更新意味着没有篡改
如果您不熟悉这些细节,请从这里开始:双重记录簿记或询问已经参加过簿记入门课程的任何人.
您要求使用Ruby on Rails开源解决方案,您可以将其插入到应用程序中.你可以使用Plutus.以下是Github上此项目描述的摘录:
plutus插件提供了一个完整的双入口会计系统,可用于任何Ruby on Rails应用程序.该插件遵循一般双重记录簿记惯例.... Plutus包括维护您的帐户,条目和借记和信用的表格.每个条目都可以有很多借记和贷记.记录您的业务交易的条目表基本上是您的会计日记帐.