我目前正在嘗試爲我的rails應用程序的管理部分實現日誌。這將允許管理員查看用戶執行什麼操作以及何時執行操作。例如,「用戶添加了新地址」,「用戶將他們的郵編從X更新爲Y」。由於每個動作都可能涉及許多模型,而不僅僅是用戶,所以我製作了一個日誌模型,其中包含所有其他系統模型ID,消息和日誌代碼的字段。在rails中保存用戶事件的日誌
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 /細節中提取相關的用戶和地址信息,但如果要刪除此用戶或地址,則所有信息都會不可用,所以通過日誌回顧,入口將是基本的你沒用。
必須有更好的方法或者已經存在的東西來幫助記錄這樣的系統事件並應對潛在的刪除。
或者,我可以將整個條目作爲文本消息存儲,但不會非常糟糕,並且不必要地填充數據庫?
讓我知道如果有任何不清楚,只是計算日誌記錄應用程序的行動/事件必須已經完成!
感謝,
皮特
這看起來很有前途,特別像外觀紙質的痕跡,但它只能保存一個版本/日誌,當模型改變的權利? 如果我想單獨手動指定每個更改,該怎麼辦?或者,如果執行的操作不一定會更改模型,而是執行其他操作,比如發送電子郵件? –
是的,版本控制/審計通常僅由記錄更改觸發。如果您需要記錄不一定觸發數據庫更改的自定義操作,則需要創建自己的記錄器。 – eugen