ruby-on-rails - 在 Rails 中记录用户事件

标签 ruby-on-rails database activerecord logging action

我目前正在尝试为我的 Rails 应用程序的管理部分实现一个日志。这将允许管理员查看用户执行了哪些操作以及何时执行。例如“用户添加了新地址”、“用户将邮政编码从 X 更新为 Y”。

由于每个操作都可能涉及许多模型,而不仅仅是用户,我制作了一个日志模型,其中包含所有其他系统模型 ID、消息和日志代码的字段。

class CreateLogs < ActiveRecord::Migration
  def self.up
    create_table :logs do |t|
      t.integer :user_id
      t.integer :marker_id
      t.integer :administrator_id
      t.integer :group_id
      t.integer :assignment_id
      t.integer :submission_id
      t.integer :code
      t.text :message

      t.timestamps
    end
  end

  def self.down
    drop_table :logs
  end
end

我担心的是,例如,用户可以(假设)向他们的帐户添加分配,它被记录为

Log.create(:user_id => current_user.id, :assignment_id => the_assignment.id, :code => 342, :message => '')

(某处代码 342 对应于“用户创建了一个新地址”,因此不需要消息)

显然在日志 View 中,我可以从日志 ids/详细信息中提取相关的用户和地址信息,但是如果要删除该用户或地址,所有这些信息都将不可用,因此回顾日志, entry 基本上没用。

必须有更好的方法或已经存在的东西来帮助记录这样的系统事件并处理潜在的删除。

或者,我可以将整个条目存储为文本消息,但这不是很糟糕并且不必要地填满数据库吗?

如果有任何不清楚的地方,请告诉我,只是想记录应用程序操作/事件之前必须完成!

谢谢,

皮特

最佳答案

看看 ActiveRecord Versioning 上列出的 gem ,这可能就是您所需要的。

关于ruby-on-rails - 在 Rails 中记录用户事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7235796/

相关文章:

ruby-on-rails - 如何在 Rails 2 中保存上传的文件

ruby-on-rails - Create_table 方法/ block

ruby-on-rails - 我是否需要将所有内容都放在 sidekiq 的 app/workers 中?

ruby-on-rails - if语句基于表单select rails

database - Cassandra(从BI的数据库复制数据)

MySQL:从多个表中获取数据,允许空值和ID列表

sql - 仅返回此 ActiveRecord 查询中的唯一记录

ruby-on-rails - Rails 3 ActiveRecord 本地化

ruby-on-rails - skip_before_filter 忽略条件

php - 数据库显示希伯来语,但在 php 中希伯来语数据显示为问号