【发布时间】:2011-08-29 20:47:46
【问题描述】:
我目前正在尝试为我的 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 对应于“用户创建了一个新地址”,因此不需要消息)
显然,在日志视图中,我可以从日志 ID/详细信息中提取相关用户和地址信息,但如果要删除此用户或地址,则所有这些信息都将不可用,因此回顾日志,输入基本没用。
必须有更好的方法或已经存在的东西来帮助记录此类系统事件并应对潜在的删除。
或者,我可以将整个条目存储为文本消息,但这不是很糟糕并且不必要地填充数据库吗?
如果有任何不清楚的地方,请告诉我,只是想记录应用程序操作/事件之前必须完成!
谢谢,
皮特
【问题讨论】:
标签: ruby-on-rails database activerecord logging action