在Rails中创建仪表板

Ste*_*eve 5 ruby-on-rails

假设我有一个地址簿的应用程序.我想要一个专门用于"仪表板"的页面.在这个页面上,我想有一个在应用程序本身内发生的事件的运行列表.

事件示例可能是:

  1. 用户添加联系人.
  2. 用户删除联系人.
  3. 用户更新联系人.

创建此类功能的最佳方法是什么?最初我觉得我可以使用现有数据进行一些创意数据库调用,但是我无法处理删除数据的事件,例如删除联系人时.

所以现在我认为它必须是一个单独的表,它只是在事件发生时存储它们.这是大多数网站如何实现这一目标的吗?

我可以在整个应用程序中运行,每次执行CRUD操作时,我都可以在表格中创建一个新项目,详细说明发生了什么,但这似乎不是很干.

我想我的问题是 - 在现有应用程序(如地址簿)中创建仪表板功能的最佳方法是什么?

任何指导将不胜感激.

Mik*_*cic 6

最简单的方法是在数据库中使用"logger"表以外的用户Observers.

Logger
  id
  model_name
  model_id
  message
Run Code Online (Sandbox Code Playgroud)

这样,您可以为要记录的所有模型设置Observer,并执行以下操作:

after_delete(contact)
  Logger.create({:model_name => contact.class.to_s,
                 :model_id => contact.id,
                 :message => "Contact was deleted at #{Time.now}"})
end
Run Code Online (Sandbox Code Playgroud)

现在,您可以以您认为合适的方式记录任何事件.这种结构的另一个重要补充是实现"逻辑删除",这意味着你永远不会真正从表中删除记录,你只需给它一个标志,以便它不再显示在常规结果集中.有一个插件可以做到这一点叫做acts_as_paranoid.

如果您实现上述两个方面,仪表板可以记录所有重要操作,如果您需要查看发生的情况或查看这些事件的数据,它们都在系统中,可以通过控制台(或控制器,如果您设置它们).