В настоящее время я пытаюсь создать журнал для раздела администрирования моего приложения rails. Это позволит администратору увидеть, какие действия пользователь выполнил и когда. Например: «Пользователь добавил новый адрес», «Пользователь обновил свой почтовый индекс с X на Y».
Поскольку каждое действие потенциально может включать множество моделей, а не только пользователя, я создал модель журнала, в которой есть поля для всех остальных. система моделирует идентификаторы, сообщение и код журнала.
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 соответствует ' Пользователь создал новый адрес ', следовательно, в сообщении нет необходимости)
Очевидно, что при просмотре журнала я могу извлечь информацию о соответствующем пользователе и адресе из идентификаторов / сведений журнала, но если этот пользователь или адрес будут удалены, все это информация будет недоступна, и поэтому, просматривая журналы, запись будет в основном бесполезной.
Должен быть лучший способ или что-то уже существующее, чтобы помочь зарегистрировать системные события, подобные этому, и справиться с потенциальными удалениями.
В качестве альтернативы я мог бы сохранить всю запись в виде текстового сообщения, но было бы так плохо, и заполнить базу данных без обязательно?
Сообщите мне, если что-то из этого неясно, просто предполагалось, что действия / события приложения должны быть выполнены раньше!
Спасибо,
Пит